feat(stats): streamline updateStats function to handle updates more efficiently
This commit is contained in:
@@ -30,26 +30,16 @@ export async function updateStats(
|
|||||||
try {
|
try {
|
||||||
await getOrCreatePlayerStats(userId, guildId);
|
await getOrCreatePlayerStats(userId, guildId);
|
||||||
|
|
||||||
// Convertir incrementos a operaciones atómicas
|
const updateData: Prisma.PlayerStatsUpdateInput = {};
|
||||||
const incrementData: any = {};
|
|
||||||
const setData: any = {};
|
|
||||||
|
|
||||||
for (const [key, value] of Object.entries(updates)) {
|
for (const [key, value] of Object.entries(updates)) {
|
||||||
if (typeof value === 'number') {
|
if (value === undefined || value === null) continue;
|
||||||
// Si es un número, incrementar
|
|
||||||
incrementData[key] = value;
|
|
||||||
} else {
|
|
||||||
// Si no, establecer valor
|
|
||||||
setData[key] = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const updateData: any = {};
|
if (typeof value === 'number') {
|
||||||
if (Object.keys(incrementData).length > 0) {
|
(updateData as Record<string, any>)[key] = { increment: value };
|
||||||
updateData.increment = incrementData;
|
} else {
|
||||||
}
|
(updateData as Record<string, any>)[key] = value;
|
||||||
if (Object.keys(setData).length > 0) {
|
}
|
||||||
Object.assign(updateData, setData);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const stats = await prisma.playerStats.update({
|
const stats = await prisma.playerStats.update({
|
||||||
|
|||||||
Reference in New Issue
Block a user