From ee753468a2f2b1d0d077ac501045b769c1908706 Mon Sep 17 00:00:00 2001 From: Arthur Danjou Date: Tue, 29 Jul 2025 14:49:02 +0000 Subject: [PATCH] =?UTF-8?q?Refactor=20le=20gestionnaire=20d'=C3=A9v=C3=A9n?= =?UTF-8?q?ements=20pour=20utiliser=20des=20fonctions=20mises=20en=20cache?= =?UTF-8?q?=20pour=20r=C3=A9cup=C3=A9rer=20les=20donn=C3=A9es=20Wakatime?= =?UTF-8?q?=20en=20parall=C3=A8le.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/api/stats/index.get.ts | 53 ++++++++++++++++++++++++++++++----- 1 file changed, 46 insertions(+), 7 deletions(-) diff --git a/server/api/stats/index.get.ts b/server/api/stats/index.get.ts index 013aec4..670d8cb 100644 --- a/server/api/stats/index.get.ts +++ b/server/api/stats/index.get.ts @@ -1,18 +1,57 @@ -export default defineCachedEventHandler(async (event) => { - const { wakatime } = useRuntimeConfig(event) +import { H3Event } from 'h3' - const coding = await $fetch(`https://wakatime.com/share/${wakatime.userId}/${wakatime.coding}.json`) - const editors = await $fetch(`https://wakatime.com/share/${wakatime.userId}/${wakatime.editors}.json`) - const os = await $fetch(`https://wakatime.com/share/${wakatime.userId}/${wakatime.os}.json`) - const languages = await $fetch(`https://wakatime.com/share/${wakatime.userId}/${wakatime.languages}.json`) +export default defineEventHandler(async (event) => { + const [coding, editors, os, languages] = await Promise.all([ + cachedWakatimeCoding(event), + cachedWakatimeEditors(event), + cachedWakatimeOs(event), + cachedWakatimeLanguages(event) + ]) return { coding, editors, os, - languages, + languages } +}) + +const cachedWakatimeCoding = defineCachedFunction(async (event: H3Event) => { + const config = useRuntimeConfig(event) + + return await $fetch(`https://wakatime.com/share/${config.wakatime.userId}/${config.wakatime.coding}.json`) }, { maxAge: 24 * 60 * 60, name: 'wakatime', + getKey: () => 'coding' }) + +const cachedWakatimeEditors = defineCachedFunction(async (event: H3Event) => { + const config = useRuntimeConfig(event) + + return await $fetch(`https://wakatime.com/share/${config.wakatime.userId}/${config.wakatime.editors}.json`) +}, { + maxAge: 24 * 60 * 60, + name: 'wakatime', + getKey: () => 'editors' +}) + +const cachedWakatimeOs = defineCachedFunction(async (event: H3Event) => { + const config = useRuntimeConfig(event) + + return await $fetch(`https://wakatime.com/share/${config.wakatime.userId}/${config.wakatime.os}.json`) +}, { + maxAge: 24 * 60 * 60, + name: 'wakatime', + getKey: () => 'os' +}) + +const cachedWakatimeLanguages = defineCachedFunction(async (event: H3Event) => { + const config = useRuntimeConfig(event) + + return await $fetch(`https://wakatime.com/share/${config.wakatime.userId}/${config.wakatime.languages}.json`) +}, { + maxAge: 24 * 60 * 60, + name: 'wakatime', + getKey: () => 'languages' +}) \ No newline at end of file