diff --git a/README.md b/README.md index 549d239..2beaba0 100644 --- a/README.md +++ b/README.md @@ -25,6 +25,8 @@ systemd.services.modrinth-statistics = { serviceConfig = { ExecStart = "${pkgs.nodejs_24}/bin/node ${inputs.modrinth-statistics.packages.${pkgs.system}.default}/server/index.mjs"; + + WorkingDirectory = "${inputs.modrinth-statistics.packages.${pkgs.system}.default}"; }; }; ``` diff --git a/nuxt.config.ts b/nuxt.config.ts index a21bf70..f991c97 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -66,16 +66,20 @@ export default defineNuxtConfig({ }, hooks: { "nitro:build:public-assets"() { - cpSync("server/database/migrations", ".output/server/database/migrations", { - recursive: true, - }); + cpSync( + "server/database/migrations", + ".output/server/database/migrations", + { + recursive: true, + }, + ); }, }, runtimeConfig: { db: { url: undefined, }, - noDbWrite: undefined, + noDbWrite: undefined, metadataBase: undefined, public: { umamiID: undefined, diff --git a/server/api/stats/time/global.ts b/server/api/stats/time/global.ts index 9a94b73..1d08563 100644 --- a/server/api/stats/time/global.ts +++ b/server/api/stats/time/global.ts @@ -1,4 +1,3 @@ -import consola from "consola"; import { z } from "zod"; import { exportGlobalStatsOverTime } from "~~/server/utils/api/export/globalStats"; import { fracture } from "~~/server/utils/processing/aggregate"; @@ -24,7 +23,7 @@ export default defineCachedEventHandler( const dateKey = await KV.LatestDate.get(); if (dateKey instanceof Error) { - consola.error("no latestDate set"); + LOGGER.error("no latestDate set"); return { labels: [], diff --git a/server/api/stats/time/projects.ts b/server/api/stats/time/projects.ts index 9410de1..9a72776 100644 --- a/server/api/stats/time/projects.ts +++ b/server/api/stats/time/projects.ts @@ -23,6 +23,17 @@ export default defineCachedEventHandler( }); } + const dateKey = await KV.LatestDate.get(); + + if (dateKey instanceof Error) { + LOGGER.error("no latestDate set"); + + return { + labels: [], + data: [], + }; + } + const typeFn = statStringToExtraction(query.data.stat); const days = query.data.days ? parseInt(query.data.days, 10) : undefined; @@ -30,7 +41,7 @@ export default defineCachedEventHandler( query.data.mode, query.data.type, query.data.exclusive === "true", - new Date(), + dateKey, query.data.version, typeFn, days, diff --git a/server/plugins/init.ts b/server/plugins/init.ts index 77a65d3..23e2c4c 100644 --- a/server/plugins/init.ts +++ b/server/plugins/init.ts @@ -8,7 +8,7 @@ export default defineNitroPlugin(async () => { return; } - LOGGER.info("Running database migration"); + LOGGER.info("Running database migration"); const db = useDrizzle(); await migrate(db, { migrationsFolder: join(process.cwd(), "./server/database/migrations"), diff --git a/server/plugins/storage.ts b/server/plugins/storage.ts index f6b31c1..41f003d 100644 --- a/server/plugins/storage.ts +++ b/server/plugins/storage.ts @@ -1,12 +1,15 @@ -import fsDriver from 'unstorage/drivers/fs' +import fsDriver from "unstorage/drivers/fs"; export default defineNitroPlugin(() => { - const storage = useStorage() + const storage = useStorage(); - const config = useRuntimeConfig() - const basePath = config.metadataBase || '.data/metadata' + const config = useRuntimeConfig(); + const basePath = config.metadataBase || ".data/metadata"; - storage.mount('metadata', fsDriver({ - base: basePath, - })) -}) + storage.mount( + "metadata", + fsDriver({ + base: basePath, + }), + ); +}); diff --git a/server/utils/api/export/projectStats.ts b/server/utils/api/export/projectStats.ts index 226406e..6b1bd9b 100644 --- a/server/utils/api/export/projectStats.ts +++ b/server/utils/api/export/projectStats.ts @@ -5,7 +5,7 @@ import type { ProjectStatsValue, } from "~~/server/utils/processing/projects/types"; import type { StatExport } from "~~/shared/types/types"; -import { dateToFormatted } from "~~/shared/utils/date"; +import { dateToFormatted, keyToDate } from "~~/shared/utils/date"; import type { ProjectTypes } from "~~/shared/utils/project"; // maps database data to a format usable by the frontend @@ -90,7 +90,7 @@ export async function exportStatsOverTime( versionCategory: VersionCategories, type: ProjectTypes, exclusive: boolean, - firstDate: Date, + firstDateKey: string, version: string, fn: (value: ProjectStatsValue) => number, max_days: number | undefined, @@ -100,7 +100,7 @@ export async function exportStatsOverTime( data: [], }; - let date = firstDate; + let date = keyToDate(firstDateKey); const BULK_COUNT = 25; let days_to_fetch_left = max_days ?? Number.MAX_SAFE_INTEGER;