diff --git a/server/utils/api/stats.ts b/server/utils/api/stats.ts index f96796e..f4e8bc1 100644 --- a/server/utils/api/stats.ts +++ b/server/utils/api/stats.ts @@ -10,19 +10,32 @@ export type StatExport = { }; export async function exportStats( - mode: string, + versionCategory: string, type: ProjectTypes, exclusive: boolean, fn: (value: StatsValue) => number, ): Promise { const storage = useStorage("statistics"); + const dateString = await storage.getItem("latestDate"); - let key = `${type}Stats${firstLetterUpperCase(mode)}`; + if (!dateString) { + consola.error("no latestDate set"); + + return { + labels: [], + data: [], + }; + } + + // key format: Stats + let key = `${type}Stats${firstLetterUpperCase(versionCategory)}`; if (exclusive) { key += "Exclusive"; } + key += dateString; + const stats = await storage.getItem(key); if (!stats) { diff --git a/server/utils/date.ts b/server/utils/date.ts new file mode 100644 index 0000000..82927ff --- /dev/null +++ b/server/utils/date.ts @@ -0,0 +1,3 @@ +export function dateToKey(date: Date): string { + return `${date.getUTCFullYear()}-${date.getUTCMonth() + 1}-${date.getUTCDate()}`; +} diff --git a/server/utils/statistics.ts b/server/utils/statistics.ts index d270d17..1c8d194 100644 --- a/server/utils/statistics.ts +++ b/server/utils/statistics.ts @@ -1,4 +1,5 @@ import consola from "consola"; +import { dateToKey } from "~~/server/utils/date"; type StatsDataType = Map< string, @@ -47,12 +48,16 @@ async function updateStatistic(type: ProjectTypes) { async function saveStats(stats: AllStats, type: ProjectTypes) { const storage = useStorage("statistics"); + const dateKey = dateToKey(new Date()); - await storage.setItem(`${type}StatsAll`, stats.all.all); - await storage.setItem(`${type}StatsMinor`, stats.all.minor); - await storage.setItem(`${type}StatsMajor`, stats.all.major); + await storage.setItem(`${type}StatsAll${dateKey}`, stats.all.all); + await storage.setItem(`${type}StatsMinor${dateKey}`, stats.all.minor); + await storage.setItem(`${type}StatsMajor${dateKey}`, stats.all.major); - await storage.setItem(`${type}StatsAllExclusive`, stats.exclusive.all); + await storage.setItem( + `${type}StatsAllExclusive${dateKey}`, + stats.exclusive.all, + ); await storage.setItem( `${type}StatsMinorExclusive`, stats.exclusive.minor, @@ -61,6 +66,8 @@ async function saveStats(stats: AllStats, type: ProjectTypes) { `${type}StatsMajorExclusive`, stats.exclusive.major, ); + + await storage.setItem("latestDate", dateKey); } async function getStatistics(type: ProjectTypes): Promise {