SpaceNinjaServer/src/controllers/api/setShipFavouriteLoadoutController.ts

36 lines
1.5 KiB
TypeScript
Raw Normal View History

import { getAccountIdForRequest } from "@/src/services/loginService";
import { RequestHandler } from "express";
import { getPersonalRooms } from "@/src/services/personalRoomsService";
import { IOid } from "@/src/types/commonTypes";
import { Types } from "mongoose";
2025-04-14 04:22:04 +02:00
import { TBootLocation } from "@/src/types/shipTypes";
export const setShipFavouriteLoadoutController: RequestHandler = async (req, res) => {
const accountId = await getAccountIdForRequest(req);
const personalRooms = await getPersonalRooms(accountId);
const body = JSON.parse(String(req.body)) as ISetShipFavouriteLoadoutRequest;
2025-04-14 04:22:04 +02:00
if (body.BootLocation == "LISET") {
personalRooms.Ship.FavouriteLoadoutId = new Types.ObjectId(body.FavouriteLoadoutId.$oid);
} else if (body.BootLocation == "SHOP") {
const display = personalRooms.TailorShop.FavouriteLoadouts.find(x => x.Tag == body.TagName!);
if (display) {
display.LoadoutId = new Types.ObjectId(body.FavouriteLoadoutId.$oid);
} else {
personalRooms.TailorShop.FavouriteLoadouts.push({
Tag: body.TagName!,
LoadoutId: new Types.ObjectId(body.FavouriteLoadoutId.$oid)
});
}
} else {
2025-04-14 04:22:04 +02:00
throw new Error(`unexpected BootLocation: ${body.BootLocation}`);
}
await personalRooms.save();
res.json({});
};
interface ISetShipFavouriteLoadoutRequest {
2025-04-14 04:22:04 +02:00
BootLocation: TBootLocation;
FavouriteLoadoutId: IOid;
2025-04-14 04:22:04 +02:00
TagName?: string; // given request for SHOP, but not for LISET
}