Demo

SettingService

User-specific and system-wide settings used across the ERP shell and plugins. Values are typed via SettingDataType.

Inject

TSXinject
1import { 2 ContainerRegistryManager, 3 SettingService, 4 Inject, 5 Service, 6} from "@quan-erp/shared-backend-core"; 7 8@Service() 9export class MyPluginService { 10 @Inject(SettingService, ContainerRegistryManager.BUILTIN_PLUGIN) 11 private settingService: SettingService; 12}

Write methods

set / setMany take ServiceProps with a data payload. datatype must be one of: string | number | boolean | json | date.

  • set({ data: { key, value, datatype, userId?, isPublic? } }) — upsert one setting; omit userId for global; isPublic exposes to public settings API
  • setMany({ data: Record<key, { value, datatype, userId?, isPublic }> }) — upsert many keys in one call
TSXset
1import { 2 ContainerRegistryManager, 3 Inject, 4 Service, 5 SettingService, 6} from "@quan-erp/shared-backend-core"; 7 8@Service() 9export class ThemeSettingService { 10 @Inject(SettingService, ContainerRegistryManager.BUILTIN_PLUGIN) 11 private settingService: SettingService; 12 13 async saveTheme(userId: number, theme: string) { 14 await this.settingService.set({ 15 data: { 16 key: "ui.theme", 17 value: theme, 18 datatype: "string", 19 userId, 20 isPublic: false, 21 }, 22 }); 23 } 24}

Read methods

  • get(key: string, { userId?, isPublic? }) — one setting; scope by userId and/or public flag
  • getAll(userId: number) — all settings visible to that user (user + global)
  • getPublicSettings() — settings marked public (no auth user required on the public API path)
TSXget
1import { 2 ContainerRegistryManager, 3 Inject, 4 Service, 5 SettingService, 6} from "@quan-erp/shared-backend-core"; 7 8@Service() 9export class ThemeSettingService { 10 @Inject(SettingService, ContainerRegistryManager.BUILTIN_PLUGIN) 11 private settingService: SettingService; 12 13 async loadTheme(userId: number) { 14 return this.settingService.get("ui.theme", { userId }); 15 } 16 17 async allForUser(userId: number) { 18 return this.settingService.getAll(userId); 19 } 20}