fix: CrewMembers

This commit is contained in:
Sainan 2025-01-21 05:17:51 +01:00
parent 1ba3378574
commit bdc4993f0f
3 changed files with 49 additions and 25 deletions

View File

@ -41,7 +41,6 @@ import {
ICrewShipPortGuns,
ICrewShipCustomization,
ICrewShipWeapon,
ICrewShipMembersClient,
ICrewShipPilotWeapon,
IShipExterior,
IHelminthFoodRecord,
@ -52,7 +51,9 @@ import {
ICompletedDialogue,
IDialogueClient,
IUpgradeDatabase,
ICrewShipDatabase
ICrewShipDatabase,
ICrewShipMemberDatabase,
ICrewShipMemberClient
} from "../../types/inventoryTypes/inventoryTypes";
import { IOid } from "../../types/commonTypes";
import {
@ -675,25 +676,33 @@ const crewShipCustomizationSchema = new Schema<ICrewShipCustomization>(
{ _id: false }
);
const crewShipMembersSchema = new Schema<ICrewShipMembersDatabase>(
const crewShipMemberSchema = new Schema<ICrewShipMemberDatabase>(
{
SLOT_A: { type: Schema.Types.ObjectId, required: false },
SLOT_B: { type: Schema.Types.ObjectId, required: false },
SLOT_C: { type: Schema.Types.ObjectId, required: false }
ItemId: { type: Schema.Types.ObjectId, required: false },
NemesisFingerprint: { type: Number, required: false }
},
{ _id: false }
);
crewShipMembersSchema.set("toJSON", {
crewShipMemberSchema.set("toJSON", {
virtuals: true,
transform(_doc, obj) {
const db = obj as ICrewShipMembersDatabase;
const client = obj as ICrewShipMembersClient;
client.SLOT_A = db.SLOT_A ? { ItemId: toOid(db.SLOT_A) } : undefined;
client.SLOT_B = db.SLOT_B ? { ItemId: toOid(db.SLOT_B) } : undefined;
client.SLOT_C = db.SLOT_C ? { ItemId: toOid(db.SLOT_C) } : undefined;
const db = obj as ICrewShipMemberDatabase;
const client = obj as ICrewShipMemberClient;
if (db.ItemId) {
client.ItemId = toOid(db.ItemId);
}
}
});
const crewShipMembersSchema = new Schema<ICrewShipMembersDatabase>(
{
SLOT_A: { type: crewShipMemberSchema, required: false },
SLOT_B: { type: crewShipMemberSchema, required: false },
SLOT_C: { type: crewShipMemberSchema, required: false }
},
{ _id: false }
);
const crewShipSchema = new Schema<ICrewShipDatabase>({
ItemType: { type: String, required: true },
Configs: { type: [ItemConfigSchema], default: [] },

View File

@ -10,6 +10,8 @@ import {
equipmentKeys,
ICrewShipClient,
ICrewShipDatabase,
ICrewShipMemberClient,
ICrewShipMemberDatabase,
ICrewShipMembersClient,
ICrewShipMembersDatabase,
IDialogueClient,
@ -85,11 +87,18 @@ const replaceSlots = (db: ISlots, client: ISlots): void => {
db.Slots = client.Slots;
};
const convertCrewShipMember = (client: ICrewShipMemberClient): ICrewShipMemberDatabase => {
return {
...client,
ItemId: client.ItemId ? new Types.ObjectId(client.ItemId.$oid) : undefined
};
};
const convertCrewShipMembers = (client: ICrewShipMembersClient): ICrewShipMembersDatabase => {
return {
SLOT_A: client.SLOT_A ? new Types.ObjectId(client.SLOT_A.ItemId.$oid) : undefined,
SLOT_B: client.SLOT_B ? new Types.ObjectId(client.SLOT_B.ItemId.$oid) : undefined,
SLOT_C: client.SLOT_C ? new Types.ObjectId(client.SLOT_C.ItemId.$oid) : undefined
SLOT_A: client.SLOT_A ? convertCrewShipMember(client.SLOT_A) : undefined,
SLOT_B: client.SLOT_B ? convertCrewShipMember(client.SLOT_B) : undefined,
SLOT_C: client.SLOT_C ? convertCrewShipMember(client.SLOT_C) : undefined
};
};

View File

@ -471,19 +471,25 @@ export interface ICrewShipDatabase extends Omit<ICrewShipClient, "CrewMembers" |
}
export interface ICrewShipMembersClient {
SLOT_A?: ISlot;
SLOT_B?: ISlot;
SLOT_C?: ISlot;
}
export interface ISlot {
ItemId: IOid;
SLOT_A?: ICrewShipMemberClient;
SLOT_B?: ICrewShipMemberClient;
SLOT_C?: ICrewShipMemberClient;
}
export interface ICrewShipMembersDatabase {
SLOT_A?: Types.ObjectId;
SLOT_B?: Types.ObjectId;
SLOT_C?: Types.ObjectId;
SLOT_A?: ICrewShipMemberDatabase;
SLOT_B?: ICrewShipMemberDatabase;
SLOT_C?: ICrewShipMemberDatabase;
}
export interface ICrewShipMemberClient {
ItemId?: IOid;
NemesisFingerprint?: number;
}
export interface ICrewShipMemberDatabase {
ItemId?: Types.ObjectId;
NemesisFingerprint?: number;
}
export interface ICrewShipCustomization {