From c2be56b26a4f462ccb0101c9e90a1f37aa5dc3ac Mon Sep 17 00:00:00 2001 From: Huy-DNA Date: Tue, 5 Nov 2024 12:23:14 +0700 Subject: [PATCH 1/3] perf: cache user meta --- services/users.ts | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/services/users.ts b/services/users.ts index e8de9f8..212d2e5 100644 --- a/services/users.ts +++ b/services/users.ts @@ -7,15 +7,21 @@ export interface UserMeta { createdAt: Date; } +const userMetaCache = new Map(); + export const userService = { async getMetaOfUser(id: number): Promise> { - const res = await $fetch('/api/users', { - method: 'get', - query: { - id, - }, - credentials: 'include', - }); + if (!userMetaCache.has(id)) { + const res = await $fetch('/api/users', { + method: 'get', + query: { + id, + }, + credentials: 'include', + }); + userMetaCache.set(id, res); + } + const res = userMetaCache.get(id) as any; if (res.error) { return new Err({ code: res.error.code, message: res.error.message }); } From 503ed1c970abb871791450c2ebc2e3c521eba789 Mon Sep 17 00:00:00 2001 From: Huy-DNA Date: Tue, 5 Nov 2024 12:24:46 +0700 Subject: [PATCH 2/3] perf: cache group meta --- services/groups.ts | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/services/groups.ts b/services/groups.ts index 64c3c0d..654424f 100644 --- a/services/groups.ts +++ b/services/groups.ts @@ -6,14 +6,20 @@ export interface GroupMeta { createdAt: Date; } +const groupMetaCache = new Map(); + export const groupService = { - async getMetaOfGroup (id: number): Promise> { - const res = await $fetch('/api/groups', { - method: 'get', - query: { - id, - }, - }); + async getMetaOfGroup(id: number): Promise> { + if (!groupMetaCache.has(id)) { + const res = await $fetch('/api/groups', { + method: 'get', + query: { + id, + }, + }); + groupMetaCache.set(id, res); + } + const res = groupMetaCache.get(id) as any; if (res.error) { return new Err({ code: res.error.code, message: res.error.message }); } From 99f9d05f2b2c8b16c15e364288e2d3a18dac7e0c Mon Sep 17 00:00:00 2001 From: Huy-DNA Date: Tue, 5 Nov 2024 12:25:00 +0700 Subject: [PATCH 3/3] fix: lint issue --- services/groups.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/services/groups.ts b/services/groups.ts index 654424f..5995385 100644 --- a/services/groups.ts +++ b/services/groups.ts @@ -25,6 +25,5 @@ export const groupService = { } const { ok: { data } } = res; return new Ok({ name: data.name, id: data.id, createdAt: data.createdAt }); - }, };