diff --git a/server/api/stats.get.ts b/server/api/stats.get.ts index f704a1c..c8119fb 100644 --- a/server/api/stats.get.ts +++ b/server/api/stats.get.ts @@ -1,10 +1,12 @@ -export default defineEventHandler(async (event) => { - const { wakatime } = useRuntimeConfig(event) +import type { 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, @@ -13,3 +15,41 @@ export default defineEventHandler(async (event) => { languages } }) + +const cachedWakatimeCoding = defineCachedFunction(async (event: H3Event) => { + const { wakatime } = useRuntimeConfig(event) + + return await $fetch(`https://wakatime.com/share/${wakatime.userId}/${wakatime.coding}.json`) +}, { + maxAge: 24 * 60 * 60, + name: 'wakatime', + getKey: () => 'coding' +}) + +const cachedWakatimeEditors = defineCachedFunction(async (event: H3Event) => { + const { wakatime } = useRuntimeConfig(event) + + return await $fetch(`https://wakatime.com/share/${wakatime.userId}/${wakatime.editors}.json`) +}, { + maxAge: 24 * 60 * 60, + name: 'wakatime', + getKey: () => 'editors' +}) + +const cachedWakatimeOs = defineCachedFunction(async (event: H3Event) => { + const { wakatime } = useRuntimeConfig(event) + return await $fetch(`https://wakatime.com/share/${wakatime.userId}/${wakatime.os}.json`) +}, { + maxAge: 24 * 60 * 60, + name: 'wakatime', + getKey: () => 'os' +}) + +const cachedWakatimeLanguages = defineCachedFunction(async (event: H3Event) => { + const { wakatime } = useRuntimeConfig(event) + return await $fetch(`https://wakatime.com/share/${wakatime.userId}/${wakatime.languages}.json`) +}, { + maxAge: 24 * 60 * 60, + name: 'wakatime', + getKey: () => 'languages' +})