SPB Git

Repository Public

store.ts 872 B 17 lines typescript

1import { UserSettings } from '@cr/shared';2import type { Queryable } from '../../db.js';34/** Stored settings merged over the zod defaults; unknown/invalid stored values fall back to defaults. */5export async function getSettings(db: Queryable, userId: string): Promise<UserSettings> {6  const row = await db.one<{ settings: unknown }>('SELECT settings FROM application_settings WHERE user_id = $1', [userId]);7  const parsed = UserSettings.safeParse(row?.settings ?? {});8  return parsed.success ? parsed.data : UserSettings.parse({});9}10export async function putSettings(db: Queryable, userId: string, settings: UserSettings): Promise<void> {11  await db.q(12    `INSERT INTO application_settings (user_id, settings) VALUES ($1, $2)13     ON CONFLICT (user_id) DO UPDATE SET settings = excluded.settings, updated_at = now()`,14    [userId, JSON.stringify(settings)],15  );16}17
Files main
Menu

Theme