feat(import): additional fields #1305
@ -76,7 +76,6 @@ import {
 | 
			
		||||
    IIncentiveState,
 | 
			
		||||
    ISongChallenge,
 | 
			
		||||
    ILibraryPersonalProgress,
 | 
			
		||||
    ICrewShipWeaponDatabase,
 | 
			
		||||
    IRecentVendorPurchaseDatabase,
 | 
			
		||||
    IVendorPurchaseHistoryEntryDatabase,
 | 
			
		||||
    IVendorPurchaseHistoryEntryClient,
 | 
			
		||||
@ -1118,30 +1117,6 @@ const alignmentSchema = new Schema<IAlignment>(
 | 
			
		||||
    { _id: false }
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
const crewShipWeaponSchema2 = new Schema<ICrewShipWeaponDatabase>(
 | 
			
		||||
    {
 | 
			
		||||
        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 }
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
crewShipWeaponSchema2.virtual("ItemId").get(function () {
 | 
			
		||||
    return { $oid: this._id.toString() } satisfies IOid;
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
crewShipWeaponSchema2.set("toJSON", {
 | 
			
		||||
    virtuals: true,
 | 
			
		||||
    transform(_document, returnedObject) {
 | 
			
		||||
        delete returnedObject._id;
 | 
			
		||||
        delete returnedObject.__v;
 | 
			
		||||
    }
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
const inventorySchema = new Schema<IInventoryDatabase, InventoryDocumentProps>(
 | 
			
		||||
    {
 | 
			
		||||
        accountOwnerId: Schema.Types.ObjectId,
 | 
			
		||||
@ -1264,9 +1239,9 @@ const inventorySchema = new Schema<IInventoryDatabase, InventoryDocumentProps>(
 | 
			
		||||
 | 
			
		||||
        //Default RailJack
 | 
			
		||||
        CrewShipAmmo: [typeCountSchema],
 | 
			
		||||
        CrewShipWeapons: [crewShipWeaponSchema2],
 | 
			
		||||
        CrewShipWeapons: [EquipmentSchema],
 | 
			
		||||
        CrewShipWeaponSkins: [upgradeSchema],
 | 
			
		||||
        CrewShipSalvagedWeapons: [crewShipWeaponSchema2],
 | 
			
		||||
        CrewShipSalvagedWeapons: [EquipmentSchema],
 | 
			
		||||
        CrewShipSalvagedWeaponSkins: [upgradeSchema],
 | 
			
		||||
 | 
			
		||||
        //RailJack Crew
 | 
			
		||||
@ -1529,9 +1504,7 @@ export type InventoryDocumentProps = {
 | 
			
		||||
    WeaponSkins: Types.DocumentArray<IWeaponSkinDatabase>;
 | 
			
		||||
    QuestKeys: Types.DocumentArray<IQuestKeyDatabase>;
 | 
			
		||||
    Drones: Types.DocumentArray<IDroneDatabase>;
 | 
			
		||||
    CrewShipWeapons: Types.DocumentArray<ICrewShipWeaponDatabase>;
 | 
			
		||||
    CrewShipWeaponSkins: Types.DocumentArray<IUpgradeDatabase>;
 | 
			
		||||
    CrewShipSalvagedWeapons: Types.DocumentArray<ICrewShipWeaponDatabase>;
 | 
			
		||||
    CrewShipSalvagedWeaponsSkins: Types.DocumentArray<IUpgradeDatabase>;
 | 
			
		||||
} & { [K in TEquipmentKey]: Types.DocumentArray<IEquipmentDatabase> };
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -12,8 +12,6 @@ import {
 | 
			
		||||
    ICrewShipMemberDatabase,
 | 
			
		||||
    ICrewShipMembersClient,
 | 
			
		||||
    ICrewShipMembersDatabase,
 | 
			
		||||
    ICrewShipWeaponClient,
 | 
			
		||||
    ICrewShipWeaponDatabase,
 | 
			
		||||
    IDialogueClient,
 | 
			
		||||
    IDialogueDatabase,
 | 
			
		||||
    IDialogueHistoryClient,
 | 
			
		||||
@ -69,22 +67,6 @@ 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 {
 | 
			
		||||
@ -203,11 +185,6 @@ export const importInventory = (db: TInventoryDatabaseDocument, client: Partial<
 | 
			
		||||
            replaceArray<IUpgradeDatabase>(db[key], client[key].map(convertUpgrade));
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    for (const key of ["CrewShipWeapons", "CrewShipSalvagedWeapons"] as const) {
 | 
			
		||||
        if (client[key] !== undefined) {
 | 
			
		||||
            replaceArray<ICrewShipWeaponDatabase>(db[key], client[key].map(convertCrewShipWeapon));
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    for (const key of [
 | 
			
		||||
        "RawUpgrades",
 | 
			
		||||
        "MiscItems",
 | 
			
		||||
 | 
			
		||||
@ -25,8 +25,7 @@ import {
 | 
			
		||||
    ILibraryDailyTaskInfo,
 | 
			
		||||
    ICalendarProgress,
 | 
			
		||||
    IDroneClient,
 | 
			
		||||
    IUpgradeClient,
 | 
			
		||||
    ICrewShipWeaponClient
 | 
			
		||||
    IUpgradeClient
 | 
			
		||||
} from "@/src/types/inventoryTypes/inventoryTypes";
 | 
			
		||||
import { IGenericUpdate, IUpdateNodeIntrosResponse } from "../types/genericUpdate";
 | 
			
		||||
import { IMissionInventoryUpdateRequest, IUpdateChallengeProgressRequest } from "../types/requestTypes";
 | 
			
		||||
@ -426,7 +425,7 @@ export const addItem = async (
 | 
			
		||||
    }
 | 
			
		||||
    if (typeName in ExportRailjackWeapons) {
 | 
			
		||||
        return {
 | 
			
		||||
            ...addCrewShipWeapon(inventory, typeName),
 | 
			
		||||
            ...addEquipment(inventory, ExportRailjackWeapons[typeName].productCategory, typeName),
 | 
			
		||||
            ...occupySlot(inventory, InventorySlot.RJ_COMPONENT_AND_ARMAMENTS, premiumPurchase)
 | 
			
		||||
        };
 | 
			
		||||
    }
 | 
			
		||||
@ -939,20 +938,6 @@ export const addSkin = (
 | 
			
		||||
    return inventoryChanges;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const addCrewShipWeapon = (
 | 
			
		||||
    inventory: TInventoryDatabaseDocument,
 | 
			
		||||
    typeName: string,
 | 
			
		||||
    inventoryChanges: IInventoryChanges = {}
 | 
			
		||||
): IInventoryChanges => {
 | 
			
		||||
    const index = inventory.CrewShipWeapons.push({ ItemType: typeName, _id: new Types.ObjectId() }) - 1;
 | 
			
		||||
    // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
 | 
			
		||||
    inventoryChanges.CrewShipWeapons ??= [];
 | 
			
		||||
    (inventoryChanges.CrewShipWeapons as ICrewShipWeaponClient[]).push(
 | 
			
		||||
        inventory.CrewShipWeapons[index].toJSON<ICrewShipWeaponClient>()
 | 
			
		||||
    );
 | 
			
		||||
    return inventoryChanges;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const addCrewShipWeaponSkin = (
 | 
			
		||||
    inventory: TInventoryDatabaseDocument,
 | 
			
		||||
    typeName: string,
 | 
			
		||||
 | 
			
		||||
@ -30,9 +30,7 @@ export interface IInventoryDatabase
 | 
			
		||||
            | "Ships"
 | 
			
		||||
            | "WeaponSkins"
 | 
			
		||||
            | "Upgrades"
 | 
			
		||||
            | "CrewShipWeapons"
 | 
			
		||||
            | "CrewShipWeaponSkins"
 | 
			
		||||
            | "CrewShipSalvagedWeapons"
 | 
			
		||||
            | "CrewShipSalvagedWeaponSkins"
 | 
			
		||||
            | "AdultOperatorLoadOuts"
 | 
			
		||||
            | "OperatorLoadOuts"
 | 
			
		||||
@ -60,9 +58,7 @@ export interface IInventoryDatabase
 | 
			
		||||
    Ships: Types.ObjectId[];
 | 
			
		||||
    WeaponSkins: IWeaponSkinDatabase[];
 | 
			
		||||
    Upgrades: IUpgradeDatabase[];
 | 
			
		||||
    CrewShipWeapons: ICrewShipWeaponDatabase[];
 | 
			
		||||
    CrewShipWeaponSkins: IUpgradeDatabase[];
 | 
			
		||||
    CrewShipSalvagedWeapons: ICrewShipWeaponDatabase[];
 | 
			
		||||
    CrewShipSalvagedWeaponSkins: IUpgradeDatabase[];
 | 
			
		||||
    AdultOperatorLoadOuts: IOperatorConfigDatabase[];
 | 
			
		||||
    OperatorLoadOuts: IOperatorConfigDatabase[];
 | 
			
		||||
@ -114,7 +110,9 @@ export const equipmentKeys = [
 | 
			
		||||
    "DataKnives",
 | 
			
		||||
    "MechSuits",
 | 
			
		||||
    "CrewShipHarnesses",
 | 
			
		||||
    "KubrowPets"
 | 
			
		||||
    "KubrowPets",
 | 
			
		||||
    "CrewShipWeapons",
 | 
			
		||||
    "CrewShipSalvagedWeapons"
 | 
			
		||||
] as const;
 | 
			
		||||
 | 
			
		||||
export type TEquipmentKey = (typeof equipmentKeys)[number];
 | 
			
		||||
@ -299,9 +297,7 @@ export interface IInventoryClient extends IDailyAffiliations, InventoryClientEqu
 | 
			
		||||
    PersonalTechProjects: IPersonalTechProject[];
 | 
			
		||||
    PlayerSkills: IPlayerSkills;
 | 
			
		||||
    CrewShipAmmo: ITypeCount[];
 | 
			
		||||
    CrewShipWeapons: ICrewShipWeaponClient[];
 | 
			
		||||
    CrewShipWeaponSkins: IUpgradeClient[];
 | 
			
		||||
    CrewShipSalvagedWeapons: ICrewShipWeaponClient[];
 | 
			
		||||
    CrewShipSalvagedWeaponSkins: IUpgradeClient[];
 | 
			
		||||
    TradeBannedUntil?: IMongoDate;
 | 
			
		||||
    PlayedParkourTutorial: boolean;
 | 
			
		||||
@ -538,21 +534,6 @@ export interface ICrewShipWeapon {
 | 
			
		||||
    PORT_GUNS: ICrewShipPortGuns;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// inventory.CrewShipWeapons
 | 
			
		||||
export interface ICrewShipWeaponDatabase {
 | 
			
		||||
    ItemType: string;
 | 
			
		||||
    Configs?: IItemConfig[];
 | 
			
		||||
    UpgradeVer?: number;
 | 
			
		||||
    UpgradeType?: string;
 | 
			
		||||
    UpgradeFingerprint?: string;
 | 
			
		||||
    IsNew?: boolean;
 | 
			
		||||
    _id: Types.ObjectId;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export interface ICrewShipWeaponClient extends Omit<ICrewShipWeaponDatabase, "_Id"> {
 | 
			
		||||
    ItemId: IOid;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export interface ICrewShipPilotWeapon {
 | 
			
		||||
    PRIMARY_A: IEquipmentSelection;
 | 
			
		||||
    SECONDARY_A: IEquipmentSelection;
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user