import { DyFM_DataModel_Params, DyFM_Metadata, DyFM_Object } from '@futdevpro/fsm-dynamo'; import { DyNTS_ScopedConfig_Level } from '../../_enums/dynts-scoped-config-level.enum'; /** * `DyNTS_ScopedConfig` entitás (BFR-AM-004) — egy dokumentum = **egy setting-érték egy adott szinten**. * A `level` + `tableScope` + `scopeId` hármas adja a feloldási-kulcsot (a `key`-vel együtt a logikai * unique-constraint); a precedencia: **scope (leaf→root) > table > global > builtin-default**. * * `extends DyFM_Metadata`: az identitás/metadata (`_id`, `__created`, `__lastModified`, `_deleted`) * az ősből jön; a `_deleted` soft-delete marker (Date), amit a `DyNTS_ArchiveDataService` kezel — ez * a felülírás-history alapja (egy `set` a régi aktív rekordot archiválja, az újat aktívan írja). * * **Domain-agnosztikus:** a `key` `string`, a `value` `unknown` (Mongoose `Mixed`, séma-szinten * `type:'object'`). A bedrock NEM validál séma-szinten — a típushelyesség / katalógus a FOGYASZTÓ * dolga. A `value` írása **`$set`-tel atomikus** (Mongoose Mixed silent-drop ellen — lásd * `DyNTS_ScopedConfig_DataService.setValue`). */ export class DyNTS_ScopedConfig extends DyFM_Metadata { // --- a feloldási kulcs --- /** A feloldási-szint (`global`|`table`|`scope`). */ level?: DyNTS_ScopedConfig_Level; /** `level='table'|'scope'` esetén kötelező: melyik logikai tár. */ tableScope?: string; /** `level='scope'` esetén kötelező: a scope-entitás logikai azonosítója. */ scopeId?: string; // --- a setting maga --- /** A config-kulcs (a fogyasztó katalógusából; string-ként perzistált). */ key?: string; /** A setting-érték; típusa a fogyasztó katalógusa szerint. Mongoose `Mixed`. */ value?: unknown; // --- audit --- /** Ki/mi állította be (audit). */ setBy?: string; /** Beállítás-részlet (pl. preset-név, CLI-user). */ setByDetail?: string; /** Opcionális indoklás. */ note?: string; constructor(set?: Partial) { super(set); if (set) { DyFM_Object.cleanAssign(this, set); } } } /** * MongoDB data-params a `dynts_scoped_config` collection-höz (BFR-AM-004). `addArchive: true` → a * felülírt (régi) értékek soft-delete-elve megőrződnek (audit-trail / history). * * A `value` `type:'object'` (Mongoose `Mixed`) — a séma NEM validál; a típushelyesség a fogyasztó * katalógusának + set-kori validációjának dolga. */ export const DyNTS_scopedConfig_dataParams: DyFM_DataModel_Params = new DyFM_DataModel_Params({ dataName: 'dynts_scoped_config', addArchive: true, properties: { level: { type: 'string', index: true, required: true }, tableScope: { type: 'string', index: true }, scopeId: { type: 'string', index: true }, key: { type: 'string', index: true, required: true }, value: { type: 'object' }, setBy: { type: 'string', index: true }, setByDetail: { type: 'string' }, note: { type: 'string' }, }, });