UNPKG

@paperbits/common

Version:
36 lines (27 loc) 1.25 kB
import * as Objects from "../objects"; import { IObjectStorage } from "../persistence"; import { ISiteService } from "../sites"; const settingsPath = "settings"; export class SiteService implements ISiteService { constructor(private readonly objectStorage: IObjectStorage) { } public async getSettings<T>(): Promise<T> { const settings = await this.objectStorage.getObject<T>(settingsPath); return settings; } public async setSettings<T>(settings: T): Promise<void> { if (!settings) { throw new Error(`Parameter "settings" not specified.`); } await this.objectStorage.updateObject(`${settingsPath}`, settings); } public async getSetting<T>(key: string): Promise<T> { const settings = await this.objectStorage.getObject<Object>(settingsPath); const setting = Objects.getObjectAt<T>(key, settings); return setting; } public async setSetting<T>(key: string, setting: T): Promise<void> { const settings = await this.objectStorage.getObject<Object>(settingsPath); Objects.setValue(key, settings, setting); await this.objectStorage.updateObject(`${settingsPath}`, settings); } }