Demo

DeveloperConfigService

Plugin name နှင့် key ဖြင့် system-level developer/admin configuration ကို စီမံပါသည်။ Public နှင့် private API သီးခြားရှိပြီး — generic get(pluginName, key) မရှိပါ။

Inject

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

Write / remove

set သည် (key, pluginName) conflict ဖြင့် upsert လုပ်ပါသည်။ လျှို့ဝှက်ချက်များအတွက် private: true နှင့် encrypt: true ကို အသုံးပြုရပါသည်။

  • set(props) — config တစ်ခု သို့မဟုတ် အများအပြားကို upsert လုပ်ပါသည်
  • remove(key, pluginName) — အတန်း ဖျက်ပြီး cache ကို invalidate လုပ်ပါသည်
  • authorizeDeveloper(password) — developer-config password စစ်ဆေးပါသည် (မရှိသေးလျှင် true ပြန်ပါသည်)
TSXset
1import { 2 ContainerRegistryManager, 3 DeveloperConfigService, 4 Inject, 5 Service, 6} from "@quan-erp/shared-backend-core"; 7import metadata from "../../module.metadata.json" with { type: "json" }; 8 9@Service() 10export class PluginDevConfigService { 11 @Inject(DeveloperConfigService, ContainerRegistryManager.BUILTIN_PLUGIN) 12 private developerConfigService: DeveloperConfigService; 13 14 async enableFeatureFlag() { 15 await this.developerConfigService.set({ 16 data: { 17 key: "feature.newCheckout", 18 value: true, 19 pluginName: metadata.name, 20 datatype: "boolean", 21 displayName: "New checkout", 22 private: false, 23 }, 24 }); 25 } 26}

Read method များ

  • getPublicConfigByKeyAndPlugin(pluginName, key, option?) — public config
  • getPrivateConfig(pluginName, key, option?) — private; decrypt?: boolean
  • getAllPublicConfigs(skip, limit) — public config စာရင်း
TSXread
1import { 2 ContainerRegistryManager, 3 DeveloperConfigService, 4 Inject, 5 Service, 6} from "@quan-erp/shared-backend-core"; 7import metadata from "../../module.metadata.json" with { type: "json" }; 8 9@Service() 10export class PluginDevConfigService { 11 @Inject(DeveloperConfigService, ContainerRegistryManager.BUILTIN_PLUGIN) 12 private developerConfigService: DeveloperConfigService; 13 14 async isNewCheckoutEnabled() { 15 const row = await this.developerConfigService.getPublicConfigByKeyAndPlugin( 16 metadata.name, 17 "feature.newCheckout" 18 ); 19 return Boolean(row?.value); 20 } 21 22 async apiSecret() { 23 return this.developerConfigService.getPrivateConfig( 24 metadata.name, 25 "integrations.apiSecret", 26 { decrypt: true } 27 ); 28 } 29}