chore: run save operations in parallel where possible (#1401)
Some checks are pending
Build / build (18) (push) Waiting to run
Build / build (20) (push) Waiting to run
Build / build (22) (push) Waiting to run
Build Docker image / docker (push) Waiting to run

Reviewed-on: #1401
Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com>
Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>
This commit is contained in:
Sainan 2025-03-31 04:26:44 -07:00 committed by Sainan
parent 054abee62c
commit 9e0dd3e0a5
4 changed files with 15 additions and 15 deletions

View File

@ -64,9 +64,7 @@ export const contributeToDojoComponentController: RequestHandler = async (req, r
} }
} }
await guild.save(); await Promise.all([guild.save(), inventory.save(), guildMember.save()]);
await inventory.save();
await guildMember.save();
res.json({ res.json({
...(await getDojoClient(guild, 0, component._id)), ...(await getDojoClient(guild, 0, component._id)),
InventoryChanges: inventoryChanges InventoryChanges: inventoryChanges

View File

@ -4,14 +4,20 @@ import {
addVaultMiscItems, addVaultMiscItems,
getGuildForRequestEx getGuildForRequestEx
} from "@/src/services/guildService"; } 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 { getAccountIdForRequest } from "@/src/services/loginService";
import { IFusionTreasure, IMiscItem, ITypeCount } from "@/src/types/inventoryTypes/inventoryTypes"; import { IFusionTreasure, IMiscItem, ITypeCount } from "@/src/types/inventoryTypes/inventoryTypes";
import { RequestHandler } from "express"; import { RequestHandler } from "express";
export const contributeToVaultController: RequestHandler = async (req, res) => { export const contributeToVaultController: RequestHandler = async (req, res) => {
const accountId = await getAccountIdForRequest(req); 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 guild = await getGuildForRequestEx(req, inventory);
const guildMember = (await GuildMember.findOne( const guildMember = (await GuildMember.findOne(
{ accountId, guildId: guild._id }, { accountId, guildId: guild._id },
@ -20,6 +26,8 @@ export const contributeToVaultController: RequestHandler = async (req, res) => {
const request = JSON.parse(String(req.body)) as IContributeToVaultRequest; const request = JSON.parse(String(req.body)) as IContributeToVaultRequest;
if (request.RegularCredits) { if (request.RegularCredits) {
updateCurrency(inventory, request.RegularCredits, false);
guild.VaultRegularCredits ??= 0; guild.VaultRegularCredits ??= 0;
guild.VaultRegularCredits += request.RegularCredits; guild.VaultRegularCredits += request.RegularCredits;
@ -52,9 +60,7 @@ export const contributeToVaultController: RequestHandler = async (req, res) => {
} }
} }
await guild.save(); await Promise.all([guild.save(), inventory.save(), guildMember.save()]);
await inventory.save();
await guildMember.save();
res.end(); res.end();
}; };

View File

@ -47,13 +47,11 @@ export const dojoComponentRushController: RequestHandler = async (req, res) => {
} }
} }
await guild.save();
await inventory.save();
const guildMember = (await GuildMember.findOne({ accountId, guildId: guild._id }, "PremiumCreditsContributed"))!; const guildMember = (await GuildMember.findOne({ accountId, guildId: guild._id }, "PremiumCreditsContributed"))!;
guildMember.PremiumCreditsContributed ??= 0; guildMember.PremiumCreditsContributed ??= 0;
guildMember.PremiumCreditsContributed += request.Amount; guildMember.PremiumCreditsContributed += request.Amount;
await guildMember.save();
await Promise.all([guild.save(), inventory.save(), guildMember.save()]);
res.json({ res.json({
...(await getDojoClient(guild, 0, component._id)), ...(await getDojoClient(guild, 0, component._id)),

View File

@ -157,9 +157,7 @@ export const guildTechController: RequestHandler = async (req, res) => {
// Check if research is fully funded now. // Check if research is fully funded now.
await processGuildTechProjectContributionsUpdate(guild, techProject); await processGuildTechProjectContributionsUpdate(guild, techProject);
await guild.save(); await Promise.all([guild.save(), inventory.save(), guildMember.save()]);
await inventory.save();
await guildMember.save();
res.json({ res.json({
InventoryChanges: inventoryChanges, InventoryChanges: inventoryChanges,
Vault: getGuildVault(guild) Vault: getGuildVault(guild)