Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
| import { PrismaClient } from '@prisma/client'; | |
| import { defaultDatasetsFolder, defaultDataRoot } from '@/paths'; | |
| import { defaultTrainFolder } from '@/paths'; | |
| import NodeCache from 'node-cache'; | |
| import { usingBrowserDb } from '@/utils/env'; | |
| const myCache = new NodeCache(); | |
| const isBrowserMode = usingBrowserDb || (process.env.DB_MODE || '').toLowerCase() === 'browser'; | |
| const prisma = !isBrowserMode ? new PrismaClient() : null; | |
| const safeSettingLookup = async (key: string) => { | |
| if (!prisma) { | |
| return null; | |
| } | |
| try { | |
| return await prisma.settings.findFirst({ where: { key } }); | |
| } catch (error) { | |
| console.error(`Prisma settings lookup failed for key ${key}:`, error); | |
| return null; | |
| } | |
| }; | |
| const envOrDefault = (envValue: string | undefined, fallback: string) => { | |
| if (envValue && envValue.trim() !== '') { | |
| return envValue.trim(); | |
| } | |
| return fallback; | |
| }; | |
| export const flushCache = () => { | |
| myCache.flushAll(); | |
| }; | |
| export const getDatasetsRoot = async () => { | |
| const key = 'DATASETS_FOLDER'; | |
| let datasetsPath = myCache.get(key) as string; | |
| if (datasetsPath) { | |
| return datasetsPath; | |
| } | |
| if (isBrowserMode) { | |
| datasetsPath = envOrDefault(process.env.DATASETS_FOLDER, defaultDatasetsFolder); | |
| } else { | |
| const row = await safeSettingLookup('DATASETS_FOLDER'); | |
| datasetsPath = envOrDefault(process.env.DATASETS_FOLDER, defaultDatasetsFolder); | |
| if (row?.value && row.value !== '') { | |
| datasetsPath = row.value; | |
| } | |
| } | |
| myCache.set(key, datasetsPath); | |
| return datasetsPath as string; | |
| }; | |
| export const getTrainingFolder = async () => { | |
| const key = 'TRAINING_FOLDER'; | |
| let trainingRoot = myCache.get(key) as string; | |
| if (trainingRoot) { | |
| return trainingRoot; | |
| } | |
| if (isBrowserMode) { | |
| trainingRoot = envOrDefault(process.env.TRAINING_FOLDER, defaultTrainFolder); | |
| } else { | |
| const row = await safeSettingLookup(key); | |
| trainingRoot = envOrDefault(process.env.TRAINING_FOLDER, defaultTrainFolder); | |
| if (row?.value && row.value !== '') { | |
| trainingRoot = row.value; | |
| } | |
| } | |
| myCache.set(key, trainingRoot); | |
| return trainingRoot as string; | |
| }; | |
| export const getHFToken = async () => { | |
| const key = 'HF_TOKEN'; | |
| let token = myCache.get(key) as string; | |
| if (token) { | |
| return token; | |
| } | |
| if (isBrowserMode) { | |
| token = envOrDefault(process.env.HF_TOKEN, ''); | |
| } else { | |
| const row = await safeSettingLookup(key); | |
| token = envOrDefault(process.env.HF_TOKEN, ''); | |
| if (row?.value && row.value !== '') { | |
| token = row.value; | |
| } | |
| } | |
| myCache.set(key, token); | |
| return token; | |
| }; | |
| export const getDataRoot = async () => { | |
| const key = 'DATA_ROOT'; | |
| let dataRoot = myCache.get(key) as string; | |
| if (dataRoot) { | |
| return dataRoot; | |
| } | |
| if (isBrowserMode) { | |
| dataRoot = envOrDefault(process.env.DATA_ROOT, defaultDataRoot); | |
| } else { | |
| const row = await safeSettingLookup(key); | |
| dataRoot = envOrDefault(process.env.DATA_ROOT, defaultDataRoot); | |
| if (row?.value && row.value !== '') { | |
| dataRoot = row.value; | |
| } | |
| } | |
| myCache.set(key, dataRoot); | |
| return dataRoot; | |
| }; | |