From 095dc9fd9ec8988ed950e6e5e3d49d22d532662f Mon Sep 17 00:00:00 2001 From: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com> Date: Sun, 23 Mar 2025 17:51:56 +0100 Subject: [PATCH] schema for CrewShipSalvagedWeapons --- src/models/inventoryModels/inventoryModel.ts | 17 ++++++++++---- src/services/importService.ts | 23 +++++++++++++++++++ src/types/inventoryTypes/inventoryTypes.ts | 24 ++++++++++++-------- 3 files changed, 50 insertions(+), 14 deletions(-) diff --git a/src/models/inventoryModels/inventoryModel.ts b/src/models/inventoryModels/inventoryModel.ts index 7edee742..23503fb6 100644 --- a/src/models/inventoryModels/inventoryModel.ts +++ b/src/models/inventoryModels/inventoryModel.ts @@ -1120,7 +1120,12 @@ const alignmentSchema = new Schema( const crewShipWeaponSchema2 = new Schema( { - ItemType: String + ItemType: String, + Configs: { type: [ItemConfigSchema], default: undefined }, + UpgradeVer: { type: Number, default: undefined }, + UpgradeType: { type: Number, default: undefined }, + UpgradeFingerprint: { type: String, default: undefined }, + IsNew: { type: Boolean, default: undefined } }, { id: false } ); @@ -1261,11 +1266,11 @@ const inventorySchema = new Schema( CrewShipAmmo: [typeCountSchema], CrewShipWeapons: [crewShipWeaponSchema2], CrewShipWeaponSkins: [upgradeSchema], - - //NPC Crew and weapon - CrewMembers: [Schema.Types.Mixed], + CrewShipSalvagedWeapons: [crewShipWeaponSchema2], CrewShipSalvagedWeaponSkins: [upgradeSchema], - CrewShipSalvagedWeapons: [upgradeSchema], + + //RailJack Crew + CrewMembers: [Schema.Types.Mixed], //Complete Mission\Quests Missions: [missionSchema], @@ -1526,6 +1531,8 @@ export type InventoryDocumentProps = { Drones: Types.DocumentArray; CrewShipWeapons: Types.DocumentArray; CrewShipWeaponSkins: Types.DocumentArray; + CrewShipSalvagedWeapons: Types.DocumentArray; + CrewShipSalvagedWeaponsSkins: Types.DocumentArray; } & { [K in TEquipmentKey]: Types.DocumentArray }; // eslint-disable-next-line @typescript-eslint/ban-types diff --git a/src/services/importService.ts b/src/services/importService.ts index ae16e86d..7033803f 100644 --- a/src/services/importService.ts +++ b/src/services/importService.ts @@ -12,6 +12,8 @@ import { ICrewShipMemberDatabase, ICrewShipMembersClient, ICrewShipMembersDatabase, + ICrewShipWeaponClient, + ICrewShipWeaponDatabase, IDialogueClient, IDialogueDatabase, IDialogueHistoryClient, @@ -67,6 +69,22 @@ const convertEquipment = (client: IEquipmentClient): IEquipmentDatabase => { }; }; +const convertCrewShipWeapon = (client: ICrewShipWeaponClient): ICrewShipWeaponDatabase => { + const { ItemId, ...rest } = client; + return { + ...rest, + _id: new Types.ObjectId(ItemId.$oid), + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + Configs: client.Configs + ? client.Configs.map(obj => + Object.fromEntries( + Object.entries(obj).filter(([_, value]) => !Array.isArray(value) || value.length > 0) + ) + ) + : [] + }; +}; + const convertWeaponSkin = (client: IWeaponSkinClient): IWeaponSkinDatabase => { const { ItemId, ...rest } = client; return { @@ -185,6 +203,11 @@ export const importInventory = (db: TInventoryDatabaseDocument, client: Partial< replaceArray(db[key], client[key].map(convertUpgrade)); } } + for (const key of ["CrewShipWeapons", "CrewShipSalvagedWeapons"] as const) { + if (client[key] !== undefined) { + replaceArray(db[key], client[key].map(convertCrewShipWeapon)); + } + } for (const key of [ "RawUpgrades", "MiscItems", diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index 27758acb..325de479 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -30,9 +30,10 @@ export interface IInventoryDatabase | "Ships" | "WeaponSkins" | "Upgrades" - | "CrewShipSalvagedWeaponSkins" | "CrewShipWeapons" | "CrewShipWeaponSkins" + | "CrewShipSalvagedWeapons" + | "CrewShipSalvagedWeaponSkins" | "AdultOperatorLoadOuts" | "OperatorLoadOuts" | "KahlLoadOuts" @@ -59,9 +60,10 @@ export interface IInventoryDatabase Ships: Types.ObjectId[]; WeaponSkins: IWeaponSkinDatabase[]; Upgrades: IUpgradeDatabase[]; - CrewShipSalvagedWeaponSkins: IUpgradeDatabase[]; CrewShipWeapons: ICrewShipWeaponDatabase[]; CrewShipWeaponSkins: IUpgradeDatabase[]; + CrewShipSalvagedWeapons: ICrewShipWeaponDatabase[]; + CrewShipSalvagedWeaponSkins: IUpgradeDatabase[]; AdultOperatorLoadOuts: IOperatorConfigDatabase[]; OperatorLoadOuts: IOperatorConfigDatabase[]; KahlLoadOuts: IOperatorConfigDatabase[]; @@ -297,10 +299,10 @@ export interface IInventoryClient extends IDailyAffiliations, InventoryClientEqu PersonalTechProjects: IPersonalTechProject[]; PlayerSkills: IPlayerSkills; CrewShipAmmo: ITypeCount[]; - CrewShipSalvagedWeaponSkins: IUpgradeClient[]; CrewShipWeapons: ICrewShipWeaponClient[]; - CrewShipSalvagedWeapons: IEquipmentClient[]; CrewShipWeaponSkins: IUpgradeClient[]; + CrewShipSalvagedWeapons: ICrewShipWeaponClient[]; + CrewShipSalvagedWeaponSkins: IUpgradeClient[]; TradeBannedUntil?: IMongoDate; PlayedParkourTutorial: boolean; SubscribedToEmailsPersonalized: number; @@ -537,16 +539,20 @@ export interface ICrewShipWeapon { } // inventory.CrewShipWeapons -export interface ICrewShipWeaponClient { - ItemType: string; - ItemId: IOid; -} - export interface ICrewShipWeaponDatabase { ItemType: string; + Configs?: IItemConfig[]; + UpgradeVer?: number; + UpgradeType?: string; + UpgradeFingerprint?: string; + IsNew?: boolean; _id: Types.ObjectId; } +export interface ICrewShipWeaponClient extends Omit { + ItemId: IOid; +} + export interface ICrewShipPilotWeapon { PRIMARY_A: IEquipmentSelection; SECONDARY_A: IEquipmentSelection;