refactor: move addInventoryChanges into inventoryService as combineInventoryChanges
This commit is contained in:
parent
12cf1cdfdb
commit
2dc21bd107
@ -2,7 +2,7 @@ import { Inventory } from "@/src/models/inventoryModels/inventoryModel";
|
|||||||
import new_inventory from "@/static/fixed_responses/postTutorialInventory.json";
|
import new_inventory from "@/static/fixed_responses/postTutorialInventory.json";
|
||||||
import { config } from "@/src/services/configService";
|
import { config } from "@/src/services/configService";
|
||||||
import { Types } from "mongoose";
|
import { Types } from "mongoose";
|
||||||
import { SlotNames, IInventoryChanges } from "@/src/types/purchaseTypes";
|
import { SlotNames, IInventoryChanges, IBinChanges } from "@/src/types/purchaseTypes";
|
||||||
import {
|
import {
|
||||||
IChallengeProgress,
|
IChallengeProgress,
|
||||||
IConsumable,
|
IConsumable,
|
||||||
@ -59,6 +59,31 @@ export const createInventory = async (
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const combineInventoryChanges = (InventoryChanges: IInventoryChanges, delta: IInventoryChanges): void => {
|
||||||
|
for (const key in delta) {
|
||||||
|
if (!(key in InventoryChanges)) {
|
||||||
|
InventoryChanges[key] = delta[key];
|
||||||
|
} else if (Array.isArray(delta[key])) {
|
||||||
|
const left = InventoryChanges[key] as object[];
|
||||||
|
const right = delta[key] as object[];
|
||||||
|
for (const item of right) {
|
||||||
|
left.push(item);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
console.assert(key.substring(-3) == "Bin");
|
||||||
|
const left = InventoryChanges[key] as IBinChanges;
|
||||||
|
const right = delta[key] as IBinChanges;
|
||||||
|
left.count += right.count;
|
||||||
|
left.platinum += right.platinum;
|
||||||
|
left.Slots += right.Slots;
|
||||||
|
if (right.Extra) {
|
||||||
|
left.Extra ??= 0;
|
||||||
|
left.Extra += right.Extra;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
export const getInventory = async (accountOwnerId: string) => {
|
export const getInventory = async (accountOwnerId: string) => {
|
||||||
const inventory = await Inventory.findOne({ accountOwnerId: accountOwnerId });
|
const inventory = await Inventory.findOne({ accountOwnerId: accountOwnerId });
|
||||||
|
|
||||||
|
@ -1,7 +1,13 @@
|
|||||||
import { parseSlotPurchaseName } from "@/src/helpers/purchaseHelpers";
|
import { parseSlotPurchaseName } from "@/src/helpers/purchaseHelpers";
|
||||||
import { getSubstringFromKeyword } from "@/src/helpers/stringHelpers";
|
import { getSubstringFromKeyword } from "@/src/helpers/stringHelpers";
|
||||||
import { addItem, addBooster, updateCurrency, updateSlots } from "@/src/services/inventoryService";
|
import {
|
||||||
import { IPurchaseRequest, SlotPurchase, IInventoryChanges, IBinChanges } from "@/src/types/purchaseTypes";
|
addItem,
|
||||||
|
addBooster,
|
||||||
|
combineInventoryChanges,
|
||||||
|
updateCurrency,
|
||||||
|
updateSlots
|
||||||
|
} from "@/src/services/inventoryService";
|
||||||
|
import { IPurchaseRequest, SlotPurchase, IInventoryChanges } from "@/src/types/purchaseTypes";
|
||||||
import { logger } from "@/src/utils/logger";
|
import { logger } from "@/src/utils/logger";
|
||||||
import { ExportBundles, ExportGear, TRarity } from "warframe-public-export-plus";
|
import { ExportBundles, ExportGear, TRarity } from "warframe-public-export-plus";
|
||||||
|
|
||||||
@ -46,31 +52,6 @@ export const handlePurchase = async (purchaseRequest: IPurchaseRequest, accountI
|
|||||||
return purchaseResponse;
|
return purchaseResponse;
|
||||||
};
|
};
|
||||||
|
|
||||||
const addInventoryChanges = (InventoryChanges: IInventoryChanges, delta: IInventoryChanges): void => {
|
|
||||||
for (const key in delta) {
|
|
||||||
if (!(key in InventoryChanges)) {
|
|
||||||
InventoryChanges[key] = delta[key];
|
|
||||||
} else if (Array.isArray(delta[key])) {
|
|
||||||
const left = InventoryChanges[key] as object[];
|
|
||||||
const right = delta[key] as object[];
|
|
||||||
for (const item of right) {
|
|
||||||
left.push(item);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
console.assert(key.substring(-3) == "Bin");
|
|
||||||
const left = InventoryChanges[key] as IBinChanges;
|
|
||||||
const right = delta[key] as IBinChanges;
|
|
||||||
left.count += right.count;
|
|
||||||
left.platinum += right.platinum;
|
|
||||||
left.Slots += right.Slots;
|
|
||||||
if (right.Extra) {
|
|
||||||
left.Extra ??= 0;
|
|
||||||
left.Extra += right.Extra;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const handleStoreItemAcquisition = async (
|
const handleStoreItemAcquisition = async (
|
||||||
storeItemName: string,
|
storeItemName: string,
|
||||||
accountId: string,
|
accountId: string,
|
||||||
@ -86,7 +67,7 @@ const handleStoreItemAcquisition = async (
|
|||||||
const bundle = ExportBundles[storeItemName];
|
const bundle = ExportBundles[storeItemName];
|
||||||
logger.debug("acquiring bundle", bundle);
|
logger.debug("acquiring bundle", bundle);
|
||||||
for (const component of bundle.components) {
|
for (const component of bundle.components) {
|
||||||
addInventoryChanges(
|
combineInventoryChanges(
|
||||||
purchaseResponse.InventoryChanges,
|
purchaseResponse.InventoryChanges,
|
||||||
(
|
(
|
||||||
await handleStoreItemAcquisition(
|
await handleStoreItemAcquisition(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user