/ src / lib / server / settings / settings-repository.ts
settings-repository.ts
 1  import type { AppSettings } from '@/types'
 2  
 3  import {
 4    loadPublicSettings as loadStoredPublicSettings,
 5    loadSettings as loadStoredSettings,
 6    saveSettings as saveStoredSettings,
 7  } from '@/lib/server/storage'
 8  import { createSingletonRepository } from '@/lib/server/persistence/repository-utils'
 9  
10  export const settingsRepository = createSingletonRepository<AppSettings>(
11    'settings',
12    {
13      get() {
14        return loadStoredSettings()
15      },
16      save(value) {
17        saveStoredSettings(value)
18      },
19    },
20  )
21  
22  export const loadSettings = () => settingsRepository.get()
23  export const saveSettings = (value: AppSettings | Record<string, unknown>) => settingsRepository.save(value as AppSettings)
24  export const patchSettings = (updater: (current: AppSettings) => AppSettings | Record<string, unknown>) => settingsRepository.patch(updater as (current: AppSettings) => AppSettings)
25  export const loadPublicSettings = () => loadStoredPublicSettings()