chore: replace IInventoryDatabaseDocument with TInventoryDatabaseDocument which correctly models the return value of 'getInventory'

This commit is contained in:
Sainan 2025-01-03 05:28:21 +01:00
parent 0523fbdaae
commit de02dadfc6
6 changed files with 34 additions and 30 deletions

View File

@ -3,15 +3,10 @@ import { getAccountIdForRequest } from "@/src/services/loginService";
import { getJSONfromString } from "@/src/helpers/stringHelpers";
import { getInventory, addMiscItems, updateCurrency, addRecipes } from "@/src/services/inventoryService";
import { IOid } from "@/src/types/commonTypes";
import {
IConsumedSuit,
IInfestedFoundry,
IInventoryDatabaseDocument,
IMiscItem,
ITypeCount
} from "@/src/types/inventoryTypes/inventoryTypes";
import { IConsumedSuit, IInfestedFoundry, IMiscItem, ITypeCount } from "@/src/types/inventoryTypes/inventoryTypes";
import { ExportMisc, ExportRecipes } from "warframe-public-export-plus";
import { getRecipe } from "@/src/services/itemDataService";
import { TInventoryDatabaseDocument } from "@/src/models/inventoryModels/inventoryModel";
export const infestedFoundryController: RequestHandler = async (req, res) => {
const accountId = await getAccountIdForRequest(req);
@ -239,7 +234,7 @@ interface IHelminthSubsumeRequest {
Recipe: string;
}
export const handleSubsumeCompletion = (inventory: IInventoryDatabaseDocument): ITypeCount[] => {
export const handleSubsumeCompletion = (inventory: TInventoryDatabaseDocument): ITypeCount[] => {
const [recipeType] = Object.entries(ExportRecipes).find(
([_recipeType, recipe]) =>
recipe.secretIngredientAction == "SIA_WARFRAME_ABILITY" &&

View File

@ -1,11 +1,11 @@
import { RequestHandler } from "express";
import { getAccountForRequest } from "@/src/services/loginService";
import { toInventoryResponse } from "@/src/helpers/inventoryHelpers";
import { Inventory } from "@/src/models/inventoryModels/inventoryModel";
import { Inventory, TInventoryDatabaseDocument } from "@/src/models/inventoryModels/inventoryModel";
import { config } from "@/src/services/configService";
import allDialogue from "@/static/fixed_responses/allDialogue.json";
import { ILoadoutDatabase } from "@/src/types/saveLoadoutTypes";
import { IInventoryDatabaseDocument, IShipInventory, equipmentKeys } from "@/src/types/inventoryTypes/inventoryTypes";
import { IShipInventory, equipmentKeys } from "@/src/types/inventoryTypes/inventoryTypes";
import { IPolarity, ArtifactPolarity } from "@/src/types/inventoryTypes/commonInventoryTypes";
import {
ExportCustoms,
@ -63,7 +63,7 @@ export const inventoryController: RequestHandler = async (request, response) =>
inventory.InfestedFoundry.AbilityOverrideUnlockCooldown &&
new Date() >= inventory.InfestedFoundry.AbilityOverrideUnlockCooldown
) {
handleSubsumeCompletion(inventory as unknown as IInventoryDatabaseDocument);
handleSubsumeCompletion(inventory as unknown as TInventoryDatabaseDocument);
await inventory.save();
}

View File

@ -1,4 +1,4 @@
import { Model, Schema, Types, model } from "mongoose";
import { Document, Model, Schema, Types, model } from "mongoose";
import {
IFlavourItem,
IRawUpgrade,
@ -1114,3 +1114,15 @@ type InventoryDocumentProps = {
type InventoryModelType = Model<IInventoryDatabase, {}, InventoryDocumentProps>;
export const Inventory = model<IInventoryDatabase, InventoryModelType>("Inventory", inventorySchema);
// eslint-disable-next-line @typescript-eslint/ban-types
export type TInventoryDatabaseDocument = Document<unknown, {}, IInventoryDatabase> &
Omit<
IInventoryDatabase & {
_id: Types.ObjectId;
} & {
__v: number;
},
keyof InventoryDocumentProps
> &
InventoryDocumentProps;

View File

@ -2,7 +2,7 @@ import { Request } from "express";
import { getAccountIdForRequest } from "@/src/services/loginService";
import { getInventory } from "@/src/services/inventoryService";
import { Guild } from "@/src/models/guildModel";
import { IInventoryDatabaseDocument } from "../types/inventoryTypes/inventoryTypes";
import { TInventoryDatabaseDocument } from "@/src/models/inventoryModels/inventoryModel";
export const getGuildForRequest = async (req: Request) => {
const accountId = await getAccountIdForRequest(req);
@ -10,7 +10,7 @@ export const getGuildForRequest = async (req: Request) => {
return await getGuildForRequestEx(req, inventory);
};
export const getGuildForRequestEx = async (req: Request, inventory: IInventoryDatabaseDocument) => {
export const getGuildForRequestEx = async (req: Request, inventory: TInventoryDatabaseDocument) => {
const guildId = req.query.guildId as string;
if (!inventory.GuildId || inventory.GuildId.toString() != guildId) {
throw new Error("Account is not in the guild that it has sent a request for");

View File

@ -1,4 +1,4 @@
import { Inventory } from "@/src/models/inventoryModels/inventoryModel";
import { Inventory, TInventoryDatabaseDocument } from "@/src/models/inventoryModels/inventoryModel";
import postTutorialInventory from "@/static/fixed_responses/postTutorialInventory.json";
import { config } from "@/src/services/configService";
import { Types } from "mongoose";
@ -7,7 +7,6 @@ import {
IChallengeProgress,
IConsumable,
IFlavourItem,
IInventoryDatabaseDocument,
IMiscItem,
IMission,
IRawUpgrade,
@ -95,7 +94,7 @@ export const combineInventoryChanges = (InventoryChanges: IInventoryChanges, del
}
};
export const getInventory = async (accountOwnerId: string) => {
export const getInventory = async (accountOwnerId: string): Promise<TInventoryDatabaseDocument> => {
const inventory = await Inventory.findOne({ accountOwnerId: accountOwnerId });
if (!inventory) {
@ -485,7 +484,7 @@ const isCurrencyTracked = (usePremium: boolean): boolean => {
};
export const updateCurrency = (
inventory: IInventoryDatabaseDocument,
inventory: TInventoryDatabaseDocument,
price: number,
usePremium: boolean
): ICurrencyChanges => {
@ -590,7 +589,7 @@ const addCrewShip = async (typeName: string, accountId: string) => {
};
const addGearExpByCategory = (
inventory: IInventoryDatabaseDocument,
inventory: TInventoryDatabaseDocument,
gearArray: IEquipmentClient[] | undefined,
categoryName: TEquipmentKey
): void => {
@ -622,7 +621,7 @@ const addGearExpByCategory = (
});
};
export const addMiscItems = (inventory: IInventoryDatabaseDocument, itemsArray: IMiscItem[] | undefined): void => {
export const addMiscItems = (inventory: TInventoryDatabaseDocument, itemsArray: IMiscItem[] | undefined): void => {
const { MiscItems } = inventory;
itemsArray?.forEach(({ ItemCount, ItemType }) => {
@ -638,7 +637,7 @@ export const addMiscItems = (inventory: IInventoryDatabaseDocument, itemsArray:
};
export const addShipDecorations = (
inventory: IInventoryDatabaseDocument,
inventory: TInventoryDatabaseDocument,
itemsArray: IConsumable[] | undefined
): void => {
const { ShipDecorations } = inventory;
@ -655,7 +654,7 @@ export const addShipDecorations = (
});
};
export const addConsumables = (inventory: IInventoryDatabaseDocument, itemsArray: IConsumable[] | undefined): void => {
export const addConsumables = (inventory: TInventoryDatabaseDocument, itemsArray: IConsumable[] | undefined): void => {
const { Consumables } = inventory;
itemsArray?.forEach(({ ItemCount, ItemType }) => {
@ -670,7 +669,7 @@ export const addConsumables = (inventory: IInventoryDatabaseDocument, itemsArray
});
};
export const addRecipes = (inventory: IInventoryDatabaseDocument, itemsArray: ITypeCount[] | undefined): void => {
export const addRecipes = (inventory: TInventoryDatabaseDocument, itemsArray: ITypeCount[] | undefined): void => {
const { Recipes } = inventory;
itemsArray?.forEach(({ ItemCount, ItemType }) => {
@ -685,7 +684,7 @@ export const addRecipes = (inventory: IInventoryDatabaseDocument, itemsArray: IT
});
};
export const addMods = (inventory: IInventoryDatabaseDocument, itemsArray: IRawUpgrade[] | undefined): void => {
export const addMods = (inventory: TInventoryDatabaseDocument, itemsArray: IRawUpgrade[] | undefined): void => {
const { RawUpgrades } = inventory;
itemsArray?.forEach(({ ItemType, ItemCount }) => {
const itemIndex = RawUpgrades.findIndex(i => i.ItemType === ItemType);
@ -700,7 +699,7 @@ export const addMods = (inventory: IInventoryDatabaseDocument, itemsArray: IRawU
};
export const addFusionTreasures = (
inventory: IInventoryDatabaseDocument,
inventory: TInventoryDatabaseDocument,
itemsArray: IFusionTreasure[] | undefined
): void => {
const { FusionTreasures } = inventory;
@ -729,7 +728,7 @@ export const updateChallengeProgress = async (
};
export const addSeasonalChallengeHistory = (
inventory: IInventoryDatabaseDocument,
inventory: TInventoryDatabaseDocument,
itemsArray: ISeasonChallenge[] | undefined
): void => {
const category = inventory.SeasonChallengeHistory;
@ -746,7 +745,7 @@ export const addSeasonalChallengeHistory = (
};
export const addChallenges = (
inventory: IInventoryDatabaseDocument,
inventory: TInventoryDatabaseDocument,
itemsArray: IChallengeProgress[] | undefined
): void => {
const category = inventory.ChallengeProgress;
@ -763,7 +762,7 @@ export const addChallenges = (
});
};
const addMissionComplete = (inventory: IInventoryDatabaseDocument, { Tag, Completes }: IMission): void => {
const addMissionComplete = (inventory: TInventoryDatabaseDocument, { Tag, Completes }: IMission): void => {
const { Missions } = inventory;
const itemIndex = Missions.findIndex(item => item.Tag === Tag);

View File

@ -10,8 +10,6 @@ import {
IEquipmentDatabase
} from "@/src/types/inventoryTypes/commonInventoryTypes";
//Document extends will be deleted soon. TODO: delete and migrate uses to ...
export interface IInventoryDatabaseDocument extends IInventoryDatabase, Document {}
export interface IInventoryDatabase
extends Omit<
IInventoryResponse,