fix: make crew member slots optional (#766)

This commit is contained in:
Sainan 2025-01-11 23:08:17 +01:00 committed by GitHub
parent f6265d57ec
commit 53d5e7c3f0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 24 additions and 18 deletions

View File

@ -42,11 +42,12 @@ import {
ICrewShipPortGuns, ICrewShipPortGuns,
ICrewShipCustomization, ICrewShipCustomization,
ICrewShipWeapon, ICrewShipWeapon,
ICrewShipMembers, ICrewShipMembersClient,
ICrewShip, ICrewShip,
ICrewShipPilotWeapon, ICrewShipPilotWeapon,
IShipExterior, IShipExterior,
IHelminthFoodRecord IHelminthFoodRecord,
ICrewShipMembersDatabase
} from "../../types/inventoryTypes/inventoryTypes"; } from "../../types/inventoryTypes/inventoryTypes";
import { IOid } from "../../types/commonTypes"; import { IOid } from "../../types/commonTypes";
import { import {
@ -670,23 +671,22 @@ const crewShipCustomizationSchema = new Schema<ICrewShipCustomization>(
{ _id: false } { _id: false }
); );
const crewShipMembersSchema = new Schema<ICrewShipMembers>( const crewShipMembersSchema = new Schema<ICrewShipMembersDatabase>(
{ {
SLOT_A: Schema.Types.ObjectId, SLOT_A: { type: Schema.Types.ObjectId, required: false },
SLOT_B: Schema.Types.ObjectId, SLOT_B: { type: Schema.Types.ObjectId, required: false },
SLOT_C: Schema.Types.ObjectId SLOT_C: { type: Schema.Types.ObjectId, required: false }
}, },
{ _id: false } { _id: false }
); );
crewShipMembersSchema.set("toJSON", { crewShipMembersSchema.set("toJSON", {
virtuals: true, virtuals: true,
transform(_doc, ret) { transform(_doc, obj) {
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument const db = obj as ICrewShipMembersDatabase;
ret.SLOT_A = { ItemId: toOid(ret.SLOT_A) }; const client = obj as ICrewShipMembersClient;
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument client.SLOT_A = db.SLOT_A ? { ItemId: toOid(db.SLOT_A) } : undefined;
ret.SLOT_B = { ItemId: toOid(ret.SLOT_B) }; client.SLOT_B = db.SLOT_B ? { ItemId: toOid(db.SLOT_B) } : undefined;
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument client.SLOT_C = db.SLOT_C ? { ItemId: toOid(db.SLOT_C) } : undefined;
ret.SLOT_C = { ItemId: toOid(ret.SLOT_C) };
} }
}); });

View File

@ -426,21 +426,27 @@ export interface ICrewShip {
Customization?: ICrewShipCustomization; Customization?: ICrewShipCustomization;
ItemName: string; ItemName: string;
RailjackImage?: IFlavourItem; RailjackImage?: IFlavourItem;
CrewMembers?: ICrewShipMembers; CrewMembers?: ICrewShipMembersClient;
ItemId: IOid; ItemId: IOid;
_id: Types.ObjectId; _id: Types.ObjectId;
} }
export interface ICrewShipMembers { export interface ICrewShipMembersClient {
SLOT_A: ISlot; SLOT_A?: ISlot;
SLOT_B: ISlot; SLOT_B?: ISlot;
SLOT_C: ISlot; SLOT_C?: ISlot;
} }
export interface ISlot { export interface ISlot {
ItemId: IOid; ItemId: IOid;
} }
export interface ICrewShipMembersDatabase {
SLOT_A?: Types.ObjectId;
SLOT_B?: Types.ObjectId;
SLOT_C?: Types.ObjectId;
}
export interface ICrewShipCustomization { export interface ICrewShipCustomization {
CrewshipInterior: IShipExterior; CrewshipInterior: IShipExterior;
} }