From 6d9c934619e27bf470a04b523142d42cfa8929b2 Mon Sep 17 00:00:00 2001 From: Sainan Date: Mon, 20 Jan 2025 07:18:35 +0100 Subject: [PATCH] import operator/drifter loadouts --- src/models/inventoryModels/inventoryModel.ts | 5 ++--- src/services/importService.ts | 20 +++++++++++++++++++- src/types/inventoryTypes/inventoryTypes.ts | 7 ++++++- 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/src/models/inventoryModels/inventoryModel.ts b/src/models/inventoryModels/inventoryModel.ts index 0f370860..b4b08d0b 100644 --- a/src/models/inventoryModels/inventoryModel.ts +++ b/src/models/inventoryModels/inventoryModel.ts @@ -62,7 +62,6 @@ import { IOperatorConfigDatabase, IPolarity, IEquipmentDatabase, - IOperatorConfigClient, IArchonCrystalUpgrade } from "@/src/types/inventoryTypes/commonInventoryTypes"; import { toMongoDate, toOid } from "@/src/helpers/inventoryHelpers"; @@ -1167,9 +1166,9 @@ type InventoryDocumentProps = { Upgrades: Types.DocumentArray; MiscItems: Types.DocumentArray; Boosters: Types.DocumentArray; - OperatorLoadOuts: Types.DocumentArray; + OperatorLoadOuts: Types.DocumentArray; SpecialItems: Types.DocumentArray; - AdultOperatorLoadOuts: Types.DocumentArray; //TODO: this should still contain _id + AdultOperatorLoadOuts: Types.DocumentArray; MechSuits: Types.DocumentArray; Scoops: Types.DocumentArray; DataKnives: Types.DocumentArray; diff --git a/src/services/importService.ts b/src/services/importService.ts index 398d2835..c4b67f77 100644 --- a/src/services/importService.ts +++ b/src/services/importService.ts @@ -1,5 +1,10 @@ import { Types } from "mongoose"; -import { IEquipmentClient, IEquipmentDatabase } from "../types/inventoryTypes/commonInventoryTypes"; +import { + IEquipmentClient, + IEquipmentDatabase, + IOperatorConfigClient, + IOperatorConfigDatabase +} from "../types/inventoryTypes/commonInventoryTypes"; import { IMongoDate } from "../types/commonTypes"; import { equipmentKeys, @@ -49,6 +54,14 @@ const convertUpgrade = (client: IUpgradeClient): IUpgradeDatabase => { }; }; +const convertOperatorConfig = (client: IOperatorConfigClient): IOperatorConfigDatabase => { + const { ItemId, ...rest } = client; + return { + ...rest, + _id: new Types.ObjectId(client.ItemId.$oid) + }; +}; + const replaceArray = (arr: T[], replacement: T[]): void => { arr.splice(0, arr.length); replacement.forEach(x => { @@ -73,6 +86,11 @@ export const importInventory = (db: TInventoryDatabaseDocument, client: Partial< if (client.Upgrades) { replaceArray(db.Upgrades, client.Upgrades.map(convertUpgrade)); } + for (const key of ["OperatorLoadOuts", "AdultOperatorLoadOuts"] as const) { + if (client[key]) { + replaceArray(db[key], client[key].map(convertOperatorConfig)); + } + } for (const key of [ "SuitBin", "WeaponBin", diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index a68161e5..7b6a4271 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -8,7 +8,8 @@ import { IOperatorConfigClient, IEquipmentSelection, IEquipmentDatabase, - IEquipmentClient + IEquipmentClient, + IOperatorConfigDatabase } from "@/src/types/inventoryTypes/commonInventoryTypes"; export interface IInventoryDatabase @@ -27,6 +28,8 @@ export interface IInventoryDatabase | "Upgrades" | "CrewShipSalvagedWeaponSkins" | "CrewShipWeaponSkins" + | "OperatorLoadOuts" + | "AdultOperatorLoadOuts" | TEquipmentKey > { accountOwnerId: Types.ObjectId; @@ -43,6 +46,8 @@ export interface IInventoryDatabase Upgrades: IUpgradeDatabase[]; CrewShipSalvagedWeaponSkins: IUpgradeDatabase[]; CrewShipWeaponSkins: IUpgradeDatabase[]; + OperatorLoadOuts: IOperatorConfigDatabase[]; + AdultOperatorLoadOuts: IOperatorConfigDatabase[]; Suits: IEquipmentDatabase[]; LongGuns: IEquipmentDatabase[];