cache total count of library items in 60 seconds

This commit is contained in:
Hongbo Wu
2024-08-13 10:52:28 +08:00
parent 70bbdda028
commit d633b8c1c3

View File

@ -704,13 +704,22 @@ export const createSearchQueryBuilder = (
} }
export const countLibraryItems = async (args: SearchArgs, userId: string) => { export const countLibraryItems = async (args: SearchArgs, userId: string) => {
return authTrx( const cacheKey = `countLibraryItems:${userId}:${JSON.stringify(args)}`
const cachedCount = await redisDataSource.redisClient?.get(cacheKey)
if (cachedCount) {
return parseInt(cachedCount, 10)
}
const count = await authTrx(
async (tx) => createSearchQueryBuilder(args, userId, tx).getCount(), async (tx) => createSearchQueryBuilder(args, userId, tx).getCount(),
{ {
uid: userId, uid: userId,
replicationMode: 'replica', replicationMode: 'replica',
} }
) )
await redisDataSource.redisClient?.set(cacheKey, count, 'EX', 60)
return count
} }
export const searchLibraryItems = async ( export const searchLibraryItems = async (