Something went wrong. Try again.
a Page to view some global statistics about Modrinth modrinth-statistics.tobinio.dev
Something went wrong. Try again.
3.2 kB · 128 lines
TypeScript
at main
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129import type { GameVersions, VersionCategories,} from "~~/server/utils/processing/gameVersions/types";import { dateToKey } from "~~/shared/utils/date";
export const KV = { GameVersions: { async set(gameVersions: GameVersions) { const storage = useStorage("metadata"); await storage.setItem("gameVersions", gameVersions); }, async get(): Promise<GameVersions | Error> { return getFromStorageCached("metadata", "gameVersions"); }, async get_for( versionCategory: VersionCategories, ): Promise<string[] | Error> { const all_versions = await KV.GameVersions.get(); if (all_versions instanceof Error) { return all_versions; }
let version: GameVersionData; switch (versionCategory) { case "all": version = all_versions.all; break; case "major": version = all_versions.major; break; case "minor": version = all_versions.minor; break; default: version = all_versions.unified; }
return version.map((v) => v.name); }, }, LatestDate: { async set(date: Date) { const storage = useStorage("metadata"); await storage.setItem("latestDate", dateToKey(date)); }, async get(): Promise<string | Error> { return getFromStorageCached("metadata", "latestDate"); }, async getNotCached(): Promise<string | Error> { const data = await getFromStorage<string>("metadata", "latestDate");
if (!data) { return new Error( `could not find latest date in storage - storage: "metadata" key: "latestDate"`, ); }
return data; }, },};
async function getFromStorageCached<T>( storageName: string, key: string,): Promise<T | Error> { const data = await _getFromStorageCached<T>(storageName, key);
if (!data) { return new Error( `could not find value in storage - storage: "${storageName}" key: "${key}"`, ); }
return data;}
const _getFromStorageCached = defineCachedFunction( async <t>(storageName: string, key: string) => { return await getFromStorage<t>(storageName, key); }, { maxAge: 60 * 60 * 2, // 2 hours name: "getFromStorageCached", swr: false, getKey: (storageName: string, key: string) => `${storageName}-${key}`, },) as <T>(storageName: string, key: string) => Promise<T | null>;
async function getFromStorage<t>(storageName: string, key: string) { const storage = useStorage(storageName); const data = (await storage.getItem(key)) as t;
if (!data) { return null; }
return data;}
const _getFromStorageCachedBulk = defineCachedFunction( async <t>(storageName: string, keys: string[]) => { return await getFromStorageBulk<t>(storageName, keys); }, { maxAge: 60 * 60 * 2, // 2 hours name: "getFromStorageCachedBulk", swr: false, getKey: (storageName: string, keys: string[]) => `${storageName}-${keys[0]}-${keys[keys.length - 1]}`, },) as <T>(storageName: string, keys: string[]) => Promise<(T | null)[]>;
async function getFromStorageBulk<t>(storageName: string, keys: string[]) { const storage = useStorage(storageName); const data = await storage.getItems(keys);
const mapped_data = data.map((data) => { if (!data.value) { return null; }
return data.value as t; });
return mapped_data;}