mirror of
https://github.com/ahmadk953/poixpixel-discord-bot.git
synced 2025-07-04 03:16:00 +00:00
chore(bot): update caching for achievements
This commit is contained in:
parent
b990b8ea06
commit
20f50536b6
1 changed files with 31 additions and 52 deletions
|
@ -55,7 +55,7 @@ export async function getUserAchievements(
|
|||
}
|
||||
|
||||
const cachedUserAchievements = await withCache(
|
||||
`userAchievements:${userId}:allAchievements`,
|
||||
`userAchievements:${userId}`,
|
||||
async () => {
|
||||
return await db
|
||||
.select({
|
||||
|
@ -97,10 +97,7 @@ export async function updateAchievementProgress(
|
|||
return false;
|
||||
}
|
||||
|
||||
const existing = await withCache(
|
||||
`userAchievements:${userId}:${achievementId}`,
|
||||
async () => {
|
||||
return await db
|
||||
const existing = await db
|
||||
.select()
|
||||
.from(schema.userAchievementsTable)
|
||||
.where(
|
||||
|
@ -110,29 +107,15 @@ export async function updateAchievementProgress(
|
|||
),
|
||||
)
|
||||
.then((rows) => rows[0]);
|
||||
},
|
||||
);
|
||||
|
||||
await invalidateCache(`userAchievements:${userId}:allAchievements`);
|
||||
await invalidateCache(`userAchievements:${userId}:${achievementId}`);
|
||||
|
||||
if (existing) {
|
||||
await withCache(
|
||||
`userAchievements:${userId}:${achievementId}`,
|
||||
async () => {
|
||||
return await db
|
||||
await db
|
||||
.update(schema.userAchievementsTable)
|
||||
.set({ progress, earnedAt: progress === 100 ? new Date() : null })
|
||||
.where(eq(schema.userAchievementsTable.id, existing.id))
|
||||
.returning();
|
||||
},
|
||||
);
|
||||
await getUserAchievements(userId);
|
||||
} else {
|
||||
await withCache(
|
||||
`userAchievements:${userId}:${achievementId}`,
|
||||
async () => {
|
||||
return await db
|
||||
await db
|
||||
.insert(schema.userAchievementsTable)
|
||||
.values({
|
||||
discordId: userId,
|
||||
|
@ -141,11 +124,11 @@ export async function updateAchievementProgress(
|
|||
earnedAt: progress === 100 ? new Date() : null,
|
||||
})
|
||||
.returning();
|
||||
},
|
||||
);
|
||||
await getUserAchievements(userId);
|
||||
}
|
||||
|
||||
await invalidateCache(`userAchievements:${userId}`);
|
||||
await getUserAchievements(userId);
|
||||
|
||||
return true;
|
||||
} catch (error) {
|
||||
handleDbError('Failed to update achievement progress', error as Error);
|
||||
|
@ -175,8 +158,6 @@ export async function createAchievement(achievementData: {
|
|||
return undefined;
|
||||
}
|
||||
|
||||
await invalidateCache('achievementDefinitions');
|
||||
|
||||
const [achievement] = await db
|
||||
.insert(schema.achievementDefinitionsTable)
|
||||
.values({
|
||||
|
@ -191,6 +172,7 @@ export async function createAchievement(achievementData: {
|
|||
})
|
||||
.returning();
|
||||
|
||||
await invalidateCache('achievementDefinitions');
|
||||
await getAllAchievements();
|
||||
|
||||
return achievement;
|
||||
|
@ -214,8 +196,6 @@ export async function deleteAchievement(
|
|||
return false;
|
||||
}
|
||||
|
||||
await invalidateCache('achievementDefinitions');
|
||||
|
||||
await db
|
||||
.delete(schema.userAchievementsTable)
|
||||
.where(eq(schema.userAchievementsTable.achievementId, achievementId));
|
||||
|
@ -224,6 +204,7 @@ export async function deleteAchievement(
|
|||
.delete(schema.achievementDefinitionsTable)
|
||||
.where(eq(schema.achievementDefinitionsTable.id, achievementId));
|
||||
|
||||
await invalidateCache('achievementDefinitions');
|
||||
await getAllAchievements();
|
||||
|
||||
return true;
|
||||
|
@ -250,9 +231,6 @@ export async function removeUserAchievement(
|
|||
return false;
|
||||
}
|
||||
|
||||
await invalidateCache(`userAchievements:${discordId}:allAchievements`);
|
||||
await invalidateCache(`userAchievements:${discordId}:${achievementId}`);
|
||||
|
||||
await db
|
||||
.delete(schema.userAchievementsTable)
|
||||
.where(
|
||||
|
@ -262,6 +240,7 @@ export async function removeUserAchievement(
|
|||
),
|
||||
);
|
||||
|
||||
await invalidateCache(`userAchievements:${discordId}`);
|
||||
await getUserAchievements(discordId);
|
||||
|
||||
return true;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue