43 lines
1.1 KiB
TypeScript
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: {},
|
|
});
|
|
}
|
|
}
|