warmbox/apps/api/src/services/settings.service.ts

43 lines
1.1 KiB
TypeScript

import { prisma } from '../lib/prisma';
import { DEFAULT_SETTINGS } from '../models/enums';
export async function getSetting(key: string): Promise<string | null> {
const row = await prisma.setting.findUnique({ where: { key } });
return row?.value ?? null;
}
export async function getSettingOrDefault(
key: keyof typeof DEFAULT_SETTINGS,
): Promise<string> {
const value = await getSetting(key);
return value ?? DEFAULT_SETTINGS[key];
}
export async function getSettingsMap(): Promise<Record<string, string>> {
const rows = await prisma.setting.findMany();
const map: Record<string, string> = { ...DEFAULT_SETTINGS };
for (const row of rows) {
map[row.key] = row.value;
}
return map;
}
export async function upsertSetting(key: string, value: string): Promise<void> {
await prisma.setting.upsert({
where: { key },
create: { key, value },
update: { value },
});
}
export async function seedDefaultSettings(): Promise<void> {
for (const [key, value] of Object.entries(DEFAULT_SETTINGS)) {
await prisma.setting.upsert({
where: { key },
create: { key, value },
update: {},
});
}
}