From 8659928dca6158d0ee6f6849be18ef0650684e90 Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Mon, 31 Mar 2025 03:18:43 +0200 Subject: [PATCH 1/3] chore: run save operatons in parallel where possible --- .../api/contributeToDojoComponentController.ts | 8 +++++--- src/controllers/api/contributeToVaultController.ts | 8 +++++--- src/controllers/api/dojoComponentRushController.ts | 10 ++++++---- src/controllers/api/guildTechController.ts | 8 +++++--- 4 files changed, 21 insertions(+), 13 deletions(-) diff --git a/src/controllers/api/contributeToDojoComponentController.ts b/src/controllers/api/contributeToDojoComponentController.ts index acdbf8a4..abddaa56 100644 --- a/src/controllers/api/contributeToDojoComponentController.ts +++ b/src/controllers/api/contributeToDojoComponentController.ts @@ -64,9 +64,11 @@ export const contributeToDojoComponentController: RequestHandler = async (req, r } } - await guild.save(); - await inventory.save(); - await guildMember.save(); + await Promise.all([ + guild.save(), + inventory.save(), + guildMember.save(), + ]); res.json({ ...(await getDojoClient(guild, 0, component._id)), InventoryChanges: inventoryChanges diff --git a/src/controllers/api/contributeToVaultController.ts b/src/controllers/api/contributeToVaultController.ts index 74dc91a4..f38c2587 100644 --- a/src/controllers/api/contributeToVaultController.ts +++ b/src/controllers/api/contributeToVaultController.ts @@ -52,9 +52,11 @@ export const contributeToVaultController: RequestHandler = async (req, res) => { } } - await guild.save(); - await inventory.save(); - await guildMember.save(); + await Promise.all([ + guild.save(), + inventory.save(), + guildMember.save(), + ]); res.end(); }; diff --git a/src/controllers/api/dojoComponentRushController.ts b/src/controllers/api/dojoComponentRushController.ts index 33aec126..eeb8e396 100644 --- a/src/controllers/api/dojoComponentRushController.ts +++ b/src/controllers/api/dojoComponentRushController.ts @@ -47,13 +47,15 @@ export const dojoComponentRushController: RequestHandler = async (req, res) => { } } - await guild.save(); - await inventory.save(); - const guildMember = (await GuildMember.findOne({ accountId, guildId: guild._id }, "PremiumCreditsContributed"))!; guildMember.PremiumCreditsContributed ??= 0; guildMember.PremiumCreditsContributed += request.Amount; - await guildMember.save(); + + await Promise.all([ + guild.save(), + inventory.save(), + guildMember.save(), + ]); res.json({ ...(await getDojoClient(guild, 0, component._id)), diff --git a/src/controllers/api/guildTechController.ts b/src/controllers/api/guildTechController.ts index 08909b08..fc927f50 100644 --- a/src/controllers/api/guildTechController.ts +++ b/src/controllers/api/guildTechController.ts @@ -157,9 +157,11 @@ export const guildTechController: RequestHandler = async (req, res) => { // Check if research is fully funded now. await processGuildTechProjectContributionsUpdate(guild, techProject); - await guild.save(); - await inventory.save(); - await guildMember.save(); + await Promise.all([ + guild.save(), + inventory.save(), + guildMember.save(), + ]); res.json({ InventoryChanges: inventoryChanges, Vault: getGuildVault(guild) -- 2.47.2 From 653091bbaeb1a6c1d50bb585811cb33f4b1ebae8 Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Mon, 31 Mar 2025 03:23:39 +0200 Subject: [PATCH 2/3] prettier --- src/controllers/api/contributeToDojoComponentController.ts | 6 +----- src/controllers/api/contributeToVaultController.ts | 6 +----- src/controllers/api/dojoComponentRushController.ts | 6 +----- src/controllers/api/guildTechController.ts | 6 +----- 4 files changed, 4 insertions(+), 20 deletions(-) diff --git a/src/controllers/api/contributeToDojoComponentController.ts b/src/controllers/api/contributeToDojoComponentController.ts index abddaa56..6d0016eb 100644 --- a/src/controllers/api/contributeToDojoComponentController.ts +++ b/src/controllers/api/contributeToDojoComponentController.ts @@ -64,11 +64,7 @@ export const contributeToDojoComponentController: RequestHandler = async (req, r } } - await Promise.all([ - guild.save(), - inventory.save(), - guildMember.save(), - ]); + await Promise.all([guild.save(), inventory.save(), guildMember.save()]); res.json({ ...(await getDojoClient(guild, 0, component._id)), InventoryChanges: inventoryChanges diff --git a/src/controllers/api/contributeToVaultController.ts b/src/controllers/api/contributeToVaultController.ts index f38c2587..66b43fcc 100644 --- a/src/controllers/api/contributeToVaultController.ts +++ b/src/controllers/api/contributeToVaultController.ts @@ -52,11 +52,7 @@ export const contributeToVaultController: RequestHandler = async (req, res) => { } } - await Promise.all([ - guild.save(), - inventory.save(), - guildMember.save(), - ]); + await Promise.all([guild.save(), inventory.save(), guildMember.save()]); res.end(); }; diff --git a/src/controllers/api/dojoComponentRushController.ts b/src/controllers/api/dojoComponentRushController.ts index eeb8e396..899ed0af 100644 --- a/src/controllers/api/dojoComponentRushController.ts +++ b/src/controllers/api/dojoComponentRushController.ts @@ -51,11 +51,7 @@ export const dojoComponentRushController: RequestHandler = async (req, res) => { guildMember.PremiumCreditsContributed ??= 0; guildMember.PremiumCreditsContributed += request.Amount; - await Promise.all([ - guild.save(), - inventory.save(), - guildMember.save(), - ]); + await Promise.all([guild.save(), inventory.save(), guildMember.save()]); res.json({ ...(await getDojoClient(guild, 0, component._id)), diff --git a/src/controllers/api/guildTechController.ts b/src/controllers/api/guildTechController.ts index fc927f50..5b0b5374 100644 --- a/src/controllers/api/guildTechController.ts +++ b/src/controllers/api/guildTechController.ts @@ -157,11 +157,7 @@ export const guildTechController: RequestHandler = async (req, res) => { // Check if research is fully funded now. await processGuildTechProjectContributionsUpdate(guild, techProject); - await Promise.all([ - guild.save(), - inventory.save(), - guildMember.save(), - ]); + await Promise.all([guild.save(), inventory.save(), guildMember.save()]); res.json({ InventoryChanges: inventoryChanges, Vault: getGuildVault(guild) -- 2.47.2 From 9b2f1a406009e94a2b764cb85ce635375dd9d97b Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Mon, 31 Mar 2025 03:30:32 +0200 Subject: [PATCH 3/3] use inventory projection in contributeToVaultController --- src/controllers/api/contributeToVaultController.ts | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/controllers/api/contributeToVaultController.ts b/src/controllers/api/contributeToVaultController.ts index 66b43fcc..7960c951 100644 --- a/src/controllers/api/contributeToVaultController.ts +++ b/src/controllers/api/contributeToVaultController.ts @@ -4,14 +4,20 @@ import { addVaultMiscItems, getGuildForRequestEx } from "@/src/services/guildService"; -import { addFusionTreasures, addMiscItems, addShipDecorations, getInventory } from "@/src/services/inventoryService"; +import { + addFusionTreasures, + addMiscItems, + addShipDecorations, + getInventory, + updateCurrency +} from "@/src/services/inventoryService"; import { getAccountIdForRequest } from "@/src/services/loginService"; import { IFusionTreasure, IMiscItem, ITypeCount } from "@/src/types/inventoryTypes/inventoryTypes"; import { RequestHandler } from "express"; export const contributeToVaultController: RequestHandler = async (req, res) => { const accountId = await getAccountIdForRequest(req); - const inventory = await getInventory(accountId); + const inventory = await getInventory(accountId, "GuildId RegularCredits MiscItems ShipDecorations FusionTreasures"); const guild = await getGuildForRequestEx(req, inventory); const guildMember = (await GuildMember.findOne( { accountId, guildId: guild._id }, @@ -20,6 +26,8 @@ export const contributeToVaultController: RequestHandler = async (req, res) => { const request = JSON.parse(String(req.body)) as IContributeToVaultRequest; if (request.RegularCredits) { + updateCurrency(inventory, request.RegularCredits, false); + guild.VaultRegularCredits ??= 0; guild.VaultRegularCredits += request.RegularCredits; -- 2.47.2