@studiosonrai/nestjs-audit-log 1.1.4 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -98,7 +98,67 @@ await this.contactRepository.delete(id);
98
98
  For full control use `auditService.log({ entityType, entityId, action, changes, entityName })`.
99
99
  `changedBy` is filled from CLS when omitted.
100
100
 
101
+ ## Multi-Schema & Dynamic Schema Support
102
+
103
+ The package supports multi-tenant applications using dynamic database schemas (e.g. `[org_tenantA].[auditLog]`, `[org_tenantB].[auditLog]`):
104
+
105
+ ### 1. Automatic Schema Resolution via Request / CLS
106
+ Configure `getSchema` in `AuditModule.forRootAsync()` to extract the tenant schema from each incoming request:
107
+
108
+ ```typescript
109
+ AuditModule.forRootAsync({
110
+ useFactory: () => ({
111
+ // Optional: Defaults to checking req.tenantSchema, req.schemaName, header 'x-tenant-schema', or req.user.tenantSchema
112
+ getSchema: (req) => (req as any).tenantSchema,
113
+ schema: 'dbo', // Fallback default schema
114
+ schemas: ['tenant_a', 'tenant_b'], // Optional: Pre-ensure tables on boot for known schemas
115
+ }),
116
+ })
117
+ ```
118
+
119
+ When set, `AuditContextInterceptor` stores the schema in CLS under `AUDIT_CLS_SCHEMA`. Both the subscriber and `AuditService` will automatically target `[tenantSchema].[auditLog]` for all requests without any manual parameter passing.
120
+
121
+ ### 2. Explicit Schema in Service Calls
122
+ Pass `schemaName` directly to any `AuditService` query or command:
123
+
124
+ ```typescript
125
+ // Programmatic write to a tenant schema
126
+ await this.auditService.log({
127
+ entityType: 'User',
128
+ entityId: 10,
129
+ action: AuditActionType.CREATE,
130
+ }, 'org_varun');
131
+
132
+ // Paginated query targeting a tenant schema
133
+ const logs = await this.auditService.findAll({
134
+ page: 0,
135
+ limit: 20,
136
+ schemaName: 'org_varun',
137
+ });
138
+
139
+ // Filter by entity in a tenant schema
140
+ const entityLogs = await this.auditService.findByEntity('Project', 5, 'org_varun');
141
+ ```
142
+
143
+ ### 3. Run Within Tenant Context
144
+ Execute blocks of code scoped to a tenant schema:
145
+
146
+ ```typescript
147
+ await this.auditService.runInSchema('org_varun', async () => {
148
+ // All auditable entities saved or logged here write to [org_varun].[auditLog]
149
+ await this.projectRepo.save(project);
150
+ });
151
+ ```
152
+
153
+ ### 4. Dynamic Tenant Schema Provisioning
154
+ When creating a brand-new tenant schema at runtime:
155
+
156
+ ```typescript
157
+ // Idempotently creates [new_tenant].[auditLog] with indexes
158
+ await this.auditService.ensureSchemaTable('new_tenant');
159
+ ```
160
+
101
161
  ## Querying
102
162
 
103
- `AuditService` exposes `findAll(filter)` (paginated), `findByEntity`, `findByUser`, `findByAction`.
163
+ `AuditService` exposes `findAll(filter, schemaName?)` (paginated), `findByEntity(type, id, schemaName?)`, `findByUser(userId, schemaName?)`, `findByAction(action, schemaName?)`.
104
164
  Mount your own controller with your app's guards — the package ships no routes.
@@ -20,6 +20,18 @@ function defaultGetUserId(request) {
20
20
  const user = request?.user;
21
21
  return user?.id;
22
22
  }
23
+ function defaultGetSchema(request) {
24
+ const req = request;
25
+ return (req?.tenantSchema ||
26
+ req?.schemaName ||
27
+ req?.schema ||
28
+ (typeof req?.headers?.['x-tenant-schema'] === 'string'
29
+ ? req.headers['x-tenant-schema']
30
+ : undefined) ||
31
+ req?.user?.tenantSchema ||
32
+ req?.user?.schemaName ||
33
+ req?.user?.schema);
34
+ }
23
35
  let AuditContextInterceptor = class AuditContextInterceptor {
24
36
  options;
25
37
  cls;
@@ -30,11 +42,16 @@ let AuditContextInterceptor = class AuditContextInterceptor {
30
42
  intercept(context, next) {
31
43
  if (context.getType() === 'http' && this.cls.isActive()) {
32
44
  const request = context.switchToHttp().getRequest();
33
- const extractor = this.options.getUserId ?? defaultGetUserId;
34
- const userId = extractor(request);
45
+ const userExtractor = this.options.getUserId ?? defaultGetUserId;
46
+ const userId = userExtractor(request);
35
47
  if (userId !== undefined) {
36
48
  this.cls.set(audit_constants_1.AUDIT_CLS_USER_ID, userId);
37
49
  }
50
+ const schemaExtractor = this.options.getSchema ?? defaultGetSchema;
51
+ const schema = schemaExtractor(request);
52
+ if (schema !== undefined && schema.trim() !== '') {
53
+ this.cls.set(audit_constants_1.AUDIT_CLS_SCHEMA, schema.trim());
54
+ }
38
55
  }
39
56
  return next.handle();
40
57
  }
@@ -1 +1 @@
1
- {"version":3,"file":"audit-context.interceptor.js","sourceRoot":"","sources":["../../src/audit-context.interceptor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAMwB;AAExB,2CAAwC;AACxC,uDAA4E;AAG5E,SAAS,gBAAgB,CAAC,OAAgB;IACxC,MAAM,IAAI,GAAI,OAAkD,EAAE,IAAI,CAAC;IACvE,OAAO,IAAI,EAAE,EAAE,CAAC;AAClB,CAAC;AAQM,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IAGf;IACA;IAHnB,YAEmB,OAA2B,EAC3B,GAAe;QADf,YAAO,GAAP,OAAO,CAAoB;QAC3B,QAAG,GAAH,GAAG,CAAY;IAC/B,CAAC;IAEJ,SAAS,CAAC,OAAyB,EAAE,IAAiB;QACpD,IAAI,OAAO,CAAC,OAAO,EAAE,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC;YACxD,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAW,CAAC;YAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,gBAAgB,CAAC;YAC7D,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;YAClC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,mCAAiB,EAAE,MAAM,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;CACF,CAAA;AAlBY,0DAAuB;kCAAvB,uBAAuB;IADnC,IAAA,mBAAU,GAAE;IAGR,WAAA,IAAA,eAAM,EAAC,sCAAoB,CAAC,CAAA;6CAEP,uBAAU;GAJvB,uBAAuB,CAkBnC"}
1
+ {"version":3,"file":"audit-context.interceptor.js","sourceRoot":"","sources":["../../src/audit-context.interceptor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAMwB;AAExB,2CAAwC;AACxC,uDAI2B;AAG3B,SAAS,gBAAgB,CAAC,OAAgB;IACxC,MAAM,IAAI,GAAI,OAAkD,EAAE,IAAI,CAAC;IACvE,OAAO,IAAI,EAAE,EAAE,CAAC;AAClB,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAgB;IACxC,MAAM,GAAG,GAAG,OAMC,CAAC;IAEd,OAAO,CACL,GAAG,EAAE,YAAY;QACjB,GAAG,EAAE,UAAU;QACf,GAAG,EAAE,MAAM;QACX,CAAC,OAAO,GAAG,EAAE,OAAO,EAAE,CAAC,iBAAiB,CAAC,KAAK,QAAQ;YACpD,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC;YAChC,CAAC,CAAC,SAAS,CAAC;QACd,GAAG,EAAE,IAAI,EAAE,YAAY;QACvB,GAAG,EAAE,IAAI,EAAE,UAAU;QACrB,GAAG,EAAE,IAAI,EAAE,MAAM,CAClB,CAAC;AACJ,CAAC;AAQM,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IAGf;IACA;IAHnB,YAEmB,OAA2B,EAC3B,GAAe;QADf,YAAO,GAAP,OAAO,CAAoB;QAC3B,QAAG,GAAH,GAAG,CAAY;IAC/B,CAAC;IAEJ,SAAS,CAAC,OAAyB,EAAE,IAAiB;QACpD,IAAI,OAAO,CAAC,OAAO,EAAE,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC;YACxD,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAW,CAAC;YAE7D,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,gBAAgB,CAAC;YACjE,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,mCAAiB,EAAE,MAAM,CAAC,CAAC;YAC1C,CAAC;YAED,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,gBAAgB,CAAC;YACnE,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;YACxC,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBACjD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,kCAAgB,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;CACF,CAAA;AAzBY,0DAAuB;kCAAvB,uBAAuB;IADnC,IAAA,mBAAU,GAAE;IAGR,WAAA,IAAA,eAAM,EAAC,sCAAoB,CAAC,CAAA;6CAEP,uBAAU;GAJvB,uBAAuB,CAyBnC"}
@@ -8,5 +8,6 @@ export declare class AuditTableInitializer implements OnModuleInit {
8
8
  private readonly logger;
9
9
  constructor(dataSource: DataSource, options: AuditModuleOptions);
10
10
  onModuleInit(): Promise<void>;
11
+ ensureTable(rawSchema: string): Promise<void>;
11
12
  private buildCreateTableSql;
12
13
  }
@@ -42,10 +42,23 @@ let AuditTableInitializer = class AuditTableInitializer {
42
42
  if (!this.dataSource.isInitialized) {
43
43
  await this.dataSource.initialize();
44
44
  }
45
- const schema = this.options.schema ?? 'dbo';
46
- const fullName = `[${schema}].[${AuditTableInitializer_1.TABLE}]`;
45
+ const primarySchema = this.options.schema ?? 'dbo';
46
+ const schemasToEnsure = [
47
+ primarySchema,
48
+ ...(this.options.schemas ?? []).filter((s) => s && s !== primarySchema),
49
+ ];
50
+ for (const schema of schemasToEnsure) {
51
+ await this.ensureTable(schema);
52
+ }
53
+ }
54
+ async ensureTable(rawSchema) {
55
+ const cleanSchema = rawSchema.replace(/[^a-zA-Z0-9_]/g, '');
56
+ const fullName = `[${cleanSchema}].[${AuditTableInitializer_1.TABLE}]`;
47
57
  try {
48
- await this.dataSource.query(this.buildCreateTableSql(schema, fullName));
58
+ if (!this.dataSource.isInitialized) {
59
+ await this.dataSource.initialize();
60
+ }
61
+ await this.dataSource.query(this.buildCreateTableSql(cleanSchema, fullName));
49
62
  this.logger.log(`Ensured auditLog table exists at ${fullName}`);
50
63
  }
51
64
  catch (error) {
@@ -56,6 +69,11 @@ let AuditTableInitializer = class AuditTableInitializer {
56
69
  }
57
70
  buildCreateTableSql(schema, fullName) {
58
71
  return `
72
+ IF NOT EXISTS (SELECT 1 FROM sys.schemas WHERE name = N'${schema}')
73
+ BEGIN
74
+ EXEC('CREATE SCHEMA [${schema}]');
75
+ END;
76
+
59
77
  IF NOT EXISTS (
60
78
  SELECT 1 FROM sys.objects
61
79
  WHERE object_id = OBJECT_ID(N'${fullName}') AND type = 'U'
@@ -69,7 +87,7 @@ let AuditTableInitializer = class AuditTableInitializer {
69
87
  changes NVARCHAR(MAX) NULL,
70
88
  entityName NVARCHAR(500) NULL,
71
89
  changedBy INT NULL,
72
- changedAt DATETIME2 NOT NULL DEFAULT GETDATE(),
90
+ changedAt DATETIME2 NOT NULL DEFAULT SYSUTCDATETIME(),
73
91
  INDEX IX_${AuditTableInitializer_1.TABLE}_entityType_entityId (entityType, entityId),
74
92
  INDEX IX_${AuditTableInitializer_1.TABLE}_changedBy (changedBy),
75
93
  INDEX IX_${AuditTableInitializer_1.TABLE}_action (action),
@@ -1 +1 @@
1
- {"version":3,"file":"audit-table.initializer.js","sourceRoot":"","sources":["../../src/audit-table.initializer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAKwB;AACxB,6CAAmD;AACnD,qCAAqC;AACrC,iDAA+C;AAC/C,uDAAyD;AAgBlD,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;;IAKO;IAEpB;IANX,MAAM,CAAU,KAAK,GAAG,UAAU,CAAC;IAC1B,MAAM,CAAgB;IAEvC,YACuC,UAAsB,EAE1C,OAA2B;QAFP,eAAU,GAAV,UAAU,CAAY;QAE1C,YAAO,GAAP,OAAO,CAAoB;QAE5C,IAAI,CAAC,MAAM,GAAG,IAAA,4BAAa,EAAC,OAAO,EAAE,uBAAqB,CAAC,IAAI,CAAC,CAAC;IACnE,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,KAAK,KAAK,EAAE,CAAC;YAC3C,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC;QAChD,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;YAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,4FAA4F,UAAU,gDAAgD,CACvJ,CAAC;YACF,OAAO;QACT,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;YACnC,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;QACrC,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC;QAC5C,MAAM,QAAQ,GAAG,IAAI,MAAM,MAAM,uBAAqB,CAAC,KAAK,GAAG,CAAC;QAEhE,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;YACxE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,oCAAoC,QAAQ,EAAE,CAAC,CAAC;QAClE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,sCAAsC,QAAQ,IAAI;gBAChD,8EAA8E,EAChF,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACrD,CAAC;YACF,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAEO,mBAAmB,CAAC,MAAc,EAAE,QAAgB;QAC1D,OAAO;;;wCAG6B,QAAQ;;;uBAGzB,QAAQ;;;;;;;;;qBASV,uBAAqB,CAAC,KAAK;qBAC3B,uBAAqB,CAAC,KAAK;qBAC3B,uBAAqB,CAAC,KAAK;qBAC3B,uBAAqB,CAAC,KAAK;;;KAG3C,CAAC;IACJ,CAAC;;AApEU,sDAAqB;gCAArB,qBAAqB;IADjC,IAAA,mBAAU,GAAE;IAMR,WAAA,IAAA,0BAAgB,GAAE,CAAA;IAClB,WAAA,IAAA,eAAM,EAAC,sCAAoB,CAAC,CAAA;qCADoB,oBAAU;GALlD,qBAAqB,CAqEjC"}
1
+ {"version":3,"file":"audit-table.initializer.js","sourceRoot":"","sources":["../../src/audit-table.initializer.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  export declare const AUDIT_MODULE_OPTIONS = "AUDIT_MODULE_OPTIONS";
2
2
  export declare const AUDITABLE_METADATA = "audit:auditable";
3
3
  export declare const AUDIT_CLS_USER_ID = "audit:userId";
4
+ export declare const AUDIT_CLS_SCHEMA = "audit:schema";
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AUDIT_CLS_USER_ID = exports.AUDITABLE_METADATA = exports.AUDIT_MODULE_OPTIONS = void 0;
3
+ exports.AUDIT_CLS_SCHEMA = exports.AUDIT_CLS_USER_ID = exports.AUDITABLE_METADATA = exports.AUDIT_MODULE_OPTIONS = void 0;
4
4
  exports.AUDIT_MODULE_OPTIONS = 'AUDIT_MODULE_OPTIONS';
5
5
  exports.AUDITABLE_METADATA = 'audit:auditable';
6
6
  exports.AUDIT_CLS_USER_ID = 'audit:userId';
7
+ exports.AUDIT_CLS_SCHEMA = 'audit:schema';
7
8
  //# sourceMappingURL=audit.constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"audit.constants.js","sourceRoot":"","sources":["../../src/audit.constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,oBAAoB,GAAG,sBAAsB,CAAC;AAG9C,QAAA,kBAAkB,GAAG,iBAAiB,CAAC;AAGvC,QAAA,iBAAiB,GAAG,cAAc,CAAC"}
1
+ {"version":3,"file":"audit.constants.js","sourceRoot":"","sources":["../../src/audit.constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,oBAAoB,GAAG,sBAAsB,CAAC;AAG9C,QAAA,kBAAkB,GAAG,iBAAiB,CAAC;AAGvC,QAAA,iBAAiB,GAAG,cAAc,CAAC;AAGnC,QAAA,gBAAgB,GAAG,cAAc,CAAC"}
@@ -5,19 +5,24 @@ import { AuditFilterDto } from './dto/audit-filter.dto';
5
5
  import { AuditLogResponseDto } from './dto/audit-log-response.dto';
6
6
  import { PaginatedResultDto } from './dto/paginated-result.dto';
7
7
  import { AuditLogInput, AuditModuleOptions } from './interfaces/audit.interfaces';
8
+ import { AuditTableInitializer } from './audit-table.initializer';
8
9
  export declare class AuditService {
9
10
  private readonly dataSource;
10
11
  private readonly options;
11
12
  private readonly cls?;
13
+ private readonly tableInitializer?;
12
14
  private readonly logger;
13
- private readonly tableName;
14
- constructor(dataSource: DataSource, options: AuditModuleOptions, cls?: ClsService | undefined);
15
+ constructor(dataSource: DataSource, options: AuditModuleOptions, cls?: ClsService | undefined, tableInitializer?: AuditTableInitializer | undefined);
16
+ private resolveTableName;
15
17
  private currentUserId;
18
+ private currentSchema;
19
+ runInSchema<T>(schemaName: string, fn: () => Promise<T> | T): Promise<T>;
20
+ ensureSchemaTable(schemaName: string): Promise<void>;
16
21
  private enrichAuditLog;
17
- log(input: AuditLogInput): Promise<AuditLog | undefined>;
18
- logEntity(entity: object, action: AuditActionType, changedBy?: number): Promise<AuditLog | undefined>;
19
- findByEntity(entityType: string, entityId: number): Promise<AuditLogResponseDto[]>;
20
- findByUser(userId: number): Promise<AuditLogResponseDto[]>;
21
- findByAction(action: AuditActionType): Promise<AuditLogResponseDto[]>;
22
- findAll(filterDto: AuditFilterDto): Promise<PaginatedResultDto<AuditLogResponseDto>>;
22
+ log(input: AuditLogInput, schemaName?: string): Promise<AuditLog | undefined>;
23
+ logEntity(entity: object, action: AuditActionType, changedBy?: number, schemaName?: string): Promise<AuditLog | undefined>;
24
+ findByEntity(entityType: string, entityId: number, schemaName?: string): Promise<AuditLogResponseDto[]>;
25
+ findByUser(userId: number, schemaName?: string): Promise<AuditLogResponseDto[]>;
26
+ findByAction(action: AuditActionType, schemaName?: string): Promise<AuditLogResponseDto[]>;
27
+ findAll(filterDto: AuditFilterDto, schemaName?: string): Promise<PaginatedResultDto<AuditLogResponseDto>>;
23
28
  }
@@ -22,24 +22,49 @@ const audit_helper_1 = require("./audit.helper");
22
22
  const auditable_decorator_1 = require("./decorators/auditable.decorator");
23
23
  const audit_logger_1 = require("./audit.logger");
24
24
  const audit_constants_1 = require("./audit.constants");
25
+ const audit_table_initializer_1 = require("./audit-table.initializer");
25
26
  const SELECT_COLUMNS = 'id, entityType, entityId, action, changes, entityName, changedBy, changedAt';
26
27
  let AuditService = AuditService_1 = class AuditService {
27
28
  dataSource;
28
29
  options;
29
30
  cls;
31
+ tableInitializer;
30
32
  logger;
31
- tableName;
32
- constructor(dataSource, options, cls) {
33
+ constructor(dataSource, options, cls, tableInitializer) {
33
34
  this.dataSource = dataSource;
34
35
  this.options = options;
35
36
  this.cls = cls;
36
- const schema = options.schema ?? 'dbo';
37
- this.tableName = `[${schema}].[auditLog]`;
37
+ this.tableInitializer = tableInitializer;
38
38
  this.logger = (0, audit_logger_1.resolveLogger)(options, AuditService_1.name);
39
39
  }
40
+ resolveTableName(overrideSchema) {
41
+ const rawSchema = overrideSchema?.trim() ||
42
+ this.currentSchema() ||
43
+ this.options.schema ||
44
+ 'dbo';
45
+ const cleanSchema = rawSchema.replace(/[^a-zA-Z0-9_]/g, '');
46
+ return `[${cleanSchema}].[auditLog]`;
47
+ }
40
48
  currentUserId() {
41
49
  return this.cls?.get(audit_constants_1.AUDIT_CLS_USER_ID);
42
50
  }
51
+ currentSchema() {
52
+ return this.cls?.get(audit_constants_1.AUDIT_CLS_SCHEMA);
53
+ }
54
+ async runInSchema(schemaName, fn) {
55
+ if (this.cls) {
56
+ return this.cls.run(async () => {
57
+ this.cls.set(audit_constants_1.AUDIT_CLS_SCHEMA, schemaName.trim());
58
+ return fn();
59
+ });
60
+ }
61
+ return fn();
62
+ }
63
+ async ensureSchemaTable(schemaName) {
64
+ if (this.tableInitializer) {
65
+ await this.tableInitializer.ensureTable(schemaName);
66
+ }
67
+ }
43
68
  async enrichAuditLog(row) {
44
69
  const response = {
45
70
  ...row,
@@ -60,12 +85,13 @@ let AuditService = AuditService_1 = class AuditService {
60
85
  }
61
86
  return response;
62
87
  }
63
- async log(input) {
88
+ async log(input, schemaName) {
64
89
  try {
90
+ const tableName = this.resolveTableName(input.schemaName ?? schemaName);
65
91
  const changedBy = input.changedBy ?? this.currentUserId();
66
92
  const changes = input.changes ? JSON.stringify(input.changes) : null;
67
93
  const sql = `
68
- INSERT INTO ${this.tableName} (entityType, entityId, action, changes, entityName, changedBy)
94
+ INSERT INTO ${tableName} (entityType, entityId, action, changes, entityName, changedBy)
69
95
  OUTPUT INSERTED.${SELECT_COLUMNS.split(', ').join(', INSERTED.')}
70
96
  VALUES (@0, @1, @2, @3, @4, @5)
71
97
  `;
@@ -78,7 +104,7 @@ let AuditService = AuditService_1 = class AuditService {
78
104
  changedBy ?? null,
79
105
  ]);
80
106
  const saved = rows[0];
81
- this.logger.log(`Audit: ${saved.entityType} ${saved.action} id=${saved.entityId} (log #${saved.id})`);
107
+ this.logger.log(`Audit: ${saved.entityType} ${saved.action} id=${saved.entityId} (log #${saved.id}) in ${tableName}`);
82
108
  return saved;
83
109
  }
84
110
  catch (error) {
@@ -86,7 +112,7 @@ let AuditService = AuditService_1 = class AuditService {
86
112
  return undefined;
87
113
  }
88
114
  }
89
- async logEntity(entity, action, changedBy) {
115
+ async logEntity(entity, action, changedBy, schemaName) {
90
116
  const auditable = (0, auditable_decorator_1.getAuditableOptions)(entity);
91
117
  if (!auditable) {
92
118
  this.logger.warn(`logEntity called for a non-@Auditable entity: ${entity?.constructor?.name}`);
@@ -103,13 +129,15 @@ let AuditService = AuditService_1 = class AuditService {
103
129
  action,
104
130
  changes: (0, audit_helper_1.extractAuditableFields)(entity, auditable.exclude),
105
131
  changedBy,
106
- });
132
+ schemaName,
133
+ }, schemaName);
107
134
  }
108
- async findByEntity(entityType, entityId) {
135
+ async findByEntity(entityType, entityId, schemaName) {
109
136
  try {
137
+ const tableName = this.resolveTableName(schemaName);
110
138
  const sql = `
111
139
  SELECT ${SELECT_COLUMNS}
112
- FROM ${this.tableName}
140
+ FROM ${tableName}
113
141
  WHERE entityType = @0 AND entityId = @1
114
142
  ORDER BY changedAt DESC, id DESC
115
143
  `;
@@ -124,11 +152,12 @@ let AuditService = AuditService_1 = class AuditService {
124
152
  throw new common_1.InternalServerErrorException('Failed to fetch audit logs');
125
153
  }
126
154
  }
127
- async findByUser(userId) {
155
+ async findByUser(userId, schemaName) {
128
156
  try {
157
+ const tableName = this.resolveTableName(schemaName);
129
158
  const sql = `
130
159
  SELECT ${SELECT_COLUMNS}
131
- FROM ${this.tableName}
160
+ FROM ${tableName}
132
161
  WHERE changedBy = @0
133
162
  ORDER BY changedAt DESC, id DESC
134
163
  `;
@@ -140,11 +169,12 @@ let AuditService = AuditService_1 = class AuditService {
140
169
  throw new common_1.InternalServerErrorException('Failed to fetch audit logs');
141
170
  }
142
171
  }
143
- async findByAction(action) {
172
+ async findByAction(action, schemaName) {
144
173
  try {
174
+ const tableName = this.resolveTableName(schemaName);
145
175
  const sql = `
146
176
  SELECT ${SELECT_COLUMNS}
147
- FROM ${this.tableName}
177
+ FROM ${tableName}
148
178
  WHERE action = @0
149
179
  ORDER BY changedAt DESC, id DESC
150
180
  `;
@@ -156,8 +186,9 @@ let AuditService = AuditService_1 = class AuditService {
156
186
  throw new common_1.InternalServerErrorException('Failed to fetch audit logs');
157
187
  }
158
188
  }
159
- async findAll(filterDto) {
189
+ async findAll(filterDto, schemaName) {
160
190
  try {
191
+ const tableName = this.resolveTableName(filterDto.schemaName ?? schemaName);
161
192
  const { page: rawPage = 0, limit: rawLimit = 10, entityType, entityId, changedBy, action, search, } = filterDto;
162
193
  const page = Math.floor(Number(rawPage));
163
194
  const limit = Math.max(1, Math.floor(Number(rawLimit)));
@@ -187,14 +218,14 @@ let AuditService = AuditService_1 = class AuditService {
187
218
  const where = conditions.length
188
219
  ? `WHERE ${conditions.join(' AND ')}`
189
220
  : '';
190
- const countRows = await this.dataSource.query(`SELECT COUNT(*) AS total FROM ${this.tableName} ${where}`, params);
221
+ const countRows = await this.dataSource.query(`SELECT COUNT(*) AS total FROM ${tableName} ${where}`, params);
191
222
  const total = Number(countRows[0]?.total ?? 0);
192
223
  const offset = page * limit;
193
224
  const offsetIdx = params.length;
194
225
  const limitIdx = params.length + 1;
195
226
  const dataSql = `
196
227
  SELECT ${SELECT_COLUMNS}
197
- FROM ${this.tableName}
228
+ FROM ${tableName}
198
229
  ${where}
199
230
  ORDER BY changedAt DESC, id DESC
200
231
  OFFSET @${offsetIdx} ROWS FETCH NEXT @${limitIdx} ROWS ONLY
@@ -228,6 +259,8 @@ exports.AuditService = AuditService = AuditService_1 = __decorate([
228
259
  __param(0, (0, typeorm_1.InjectDataSource)()),
229
260
  __param(1, (0, common_1.Inject)(audit_constants_1.AUDIT_MODULE_OPTIONS)),
230
261
  __param(2, (0, common_1.Optional)()),
231
- __metadata("design:paramtypes", [typeorm_2.DataSource, Object, nestjs_cls_1.ClsService])
262
+ __param(3, (0, common_1.Optional)()),
263
+ __metadata("design:paramtypes", [typeorm_2.DataSource, Object, nestjs_cls_1.ClsService,
264
+ audit_table_initializer_1.AuditTableInitializer])
232
265
  ], AuditService);
233
266
  //# sourceMappingURL=audit.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"audit.service.js","sourceRoot":"","sources":["../../src/audit.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"audit.service.js","sourceRoot":"","sources":["../../src/audit.service.ts"],"names":[],"mappings":"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"}
@@ -2,10 +2,11 @@ import { DataSource, EntitySubscriberInterface, InsertEvent, RemoveEvent, SoftRe
2
2
  import { ClsService } from 'nestjs-cls';
3
3
  import { AuditModuleOptions } from './interfaces/audit.interfaces';
4
4
  export declare class AuditSubscriber implements EntitySubscriberInterface {
5
+ private readonly options;
5
6
  private readonly cls;
6
7
  private readonly logger;
7
- private readonly tableName;
8
8
  constructor(dataSource: DataSource, options: AuditModuleOptions, cls: ClsService);
9
+ private resolveTableName;
9
10
  private currentUserId;
10
11
  afterInsert(event: InsertEvent<object>): Promise<void>;
11
12
  afterUpdate(event: UpdateEvent<object>): Promise<void>;
@@ -24,16 +24,23 @@ const auditable_decorator_1 = require("./decorators/auditable.decorator");
24
24
  const audit_logger_1 = require("./audit.logger");
25
25
  const audit_constants_1 = require("./audit.constants");
26
26
  let AuditSubscriber = AuditSubscriber_1 = class AuditSubscriber {
27
+ options;
27
28
  cls;
28
29
  logger;
29
- tableName;
30
30
  constructor(dataSource, options, cls) {
31
+ this.options = options;
31
32
  this.cls = cls;
32
- const schema = options.schema ?? 'dbo';
33
- this.tableName = `[${schema}].[auditLog]`;
34
33
  this.logger = (0, audit_logger_1.resolveLogger)(options, AuditSubscriber_1.name);
35
34
  dataSource.subscribers.push(this);
36
35
  }
36
+ resolveTableName(eventSchema) {
37
+ const rawSchema = eventSchema ||
38
+ this.cls?.get(audit_constants_1.AUDIT_CLS_SCHEMA) ||
39
+ this.options.schema ||
40
+ 'dbo';
41
+ const cleanSchema = rawSchema.replace(/[^a-zA-Z0-9_]/g, '');
42
+ return `[${cleanSchema}].[auditLog]`;
43
+ }
37
44
  currentUserId() {
38
45
  return this.cls?.get(audit_constants_1.AUDIT_CLS_USER_ID);
39
46
  }
@@ -55,7 +62,7 @@ let AuditSubscriber = AuditSubscriber_1 = class AuditSubscriber {
55
62
  : undefined,
56
63
  action: audit_log_entity_1.AuditActionType.CREATE,
57
64
  changes: (0, audit_helper_1.extractAuditableFields)(entity, auditable.exclude),
58
- });
65
+ }, event.metadata?.schema);
59
66
  this.logger.log(`Recorded CREATE audit for ${auditable.entityType} ${record.id}`);
60
67
  }
61
68
  async afterUpdate(event) {
@@ -84,7 +91,7 @@ let AuditSubscriber = AuditSubscriber_1 = class AuditSubscriber {
84
91
  : undefined,
85
92
  action: audit_log_entity_1.AuditActionType.UPDATE,
86
93
  changes,
87
- });
94
+ }, event.metadata?.schema);
88
95
  this.logger.log(`Recorded UPDATE audit for ${auditable.entityType} ${record.id}`);
89
96
  }
90
97
  async afterRemove(event) {
@@ -112,13 +119,14 @@ let AuditSubscriber = AuditSubscriber_1 = class AuditSubscriber {
112
119
  : undefined,
113
120
  action: audit_log_entity_1.AuditActionType.DELETE,
114
121
  changes: (0, audit_helper_1.extractAuditableFields)(source, auditable.exclude),
115
- });
122
+ }, event.metadata?.schema);
116
123
  this.logger.log(`Recorded DELETE audit for ${auditable.entityType} ${entityId}`);
117
124
  }
118
- async persist(manager, input) {
125
+ async persist(manager, input, eventSchema) {
119
126
  try {
127
+ const tableName = this.resolveTableName(eventSchema);
120
128
  const sql = `
121
- INSERT INTO ${this.tableName} (entityType, entityId, action, changes, entityName, changedBy)
129
+ INSERT INTO ${tableName} (entityType, entityId, action, changes, entityName, changedBy)
122
130
  VALUES (@0, @1, @2, @3, @4, @5)
123
131
  `;
124
132
  await manager.query(sql, [
@@ -1 +1 @@
1
- {"version":3,"file":"audit.subscriber.js","sourceRoot":"","sources":["../../src/audit.subscriber.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"audit.subscriber.js","sourceRoot":"","sources":["../../src/audit.subscriber.ts"],"names":[],"mappings":"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"}
@@ -7,4 +7,5 @@ export declare class AuditFilterDto {
7
7
  changedBy?: number;
8
8
  action?: AuditActionType;
9
9
  search?: string;
10
+ schemaName?: string;
10
11
  }
@@ -22,6 +22,7 @@ class AuditFilterDto {
22
22
  changedBy;
23
23
  action;
24
24
  search;
25
+ schemaName;
25
26
  }
26
27
  exports.AuditFilterDto = AuditFilterDto;
27
28
  __decorate([
@@ -98,4 +99,13 @@ __decorate([
98
99
  (0, class_validator_1.IsString)(),
99
100
  __metadata("design:type", String)
100
101
  ], AuditFilterDto.prototype, "search", void 0);
102
+ __decorate([
103
+ (0, swagger_1.ApiPropertyOptional)({
104
+ description: 'Tenant or database schema where audit logs are stored',
105
+ example: 'org_varun',
106
+ }),
107
+ (0, class_validator_1.IsOptional)(),
108
+ (0, class_validator_1.IsString)(),
109
+ __metadata("design:type", String)
110
+ ], AuditFilterDto.prototype, "schemaName", void 0);
101
111
  //# sourceMappingURL=audit-filter.dto.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"audit-filter.dto.js","sourceRoot":"","sources":["../../../src/dto/audit-filter.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAAsD;AACtD,yDAAyC;AACzC,qDAA2E;AAC3E,mEAA+D;AAE/D,MAAa,cAAc;IAUzB,IAAI,GAAY,CAAC,CAAC;IAWlB,KAAK,GAAY,EAAE,CAAC;IAQpB,UAAU,CAAU;IAUpB,QAAQ,CAAU;IAUlB,SAAS,CAAU;IASnB,MAAM,CAAmB;IAQzB,MAAM,CAAU;CACjB;AAnED,wCAmEC;AAzDC;IATC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,yBAAyB;QACtC,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;KACX,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,IAAA,uBAAK,GAAE;IACP,IAAA,qBAAG,EAAC,CAAC,CAAC;;4CACW;AAWlB;IATC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,0BAA0B;QACvC,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,EAAE;KACZ,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,IAAA,uBAAK,GAAE;IACP,IAAA,qBAAG,EAAC,CAAC,CAAC;;6CACa;AAQpB;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,0BAA0B;QACvC,OAAO,EAAE,SAAS;KACnB,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;kDACS;AAUpB;IARC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,wBAAwB;QACrC,OAAO,EAAE,CAAC;KACX,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,IAAA,uBAAK,GAAE;IACP,IAAA,qBAAG,EAAC,CAAC,CAAC;;gDACW;AAUlB;IARC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,6BAA6B;QAC1C,OAAO,EAAE,CAAC;KACX,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,IAAA,uBAAK,GAAE;IACP,IAAA,qBAAG,EAAC,CAAC,CAAC;;iDACY;AASnB;IAPC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,0BAA0B;QACvC,OAAO,EAAE,QAAQ;QACjB,IAAI,EAAE,kCAAe;KACtB,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAM,EAAC,kCAAe,CAAC;;8CACC;AAQzB;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,qDAAqD;QAClE,OAAO,EAAE,SAAS;KACnB,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;8CACK"}
1
+ {"version":3,"file":"audit-filter.dto.js","sourceRoot":"","sources":["../../../src/dto/audit-filter.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAAsD;AACtD,yDAAyC;AACzC,qDAA2E;AAC3E,mEAA+D;AAE/D,MAAa,cAAc;IAUzB,IAAI,GAAY,CAAC,CAAC;IAWlB,KAAK,GAAY,EAAE,CAAC;IAQpB,UAAU,CAAU;IAUpB,QAAQ,CAAU;IAUlB,SAAS,CAAU;IASnB,MAAM,CAAmB;IAQzB,MAAM,CAAU;IAQhB,UAAU,CAAU;CACrB;AA3ED,wCA2EC;AAjEC;IATC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,yBAAyB;QACtC,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;KACX,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,IAAA,uBAAK,GAAE;IACP,IAAA,qBAAG,EAAC,CAAC,CAAC;;4CACW;AAWlB;IATC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,0BAA0B;QACvC,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,EAAE;KACZ,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,IAAA,uBAAK,GAAE;IACP,IAAA,qBAAG,EAAC,CAAC,CAAC;;6CACa;AAQpB;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,0BAA0B;QACvC,OAAO,EAAE,SAAS;KACnB,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;kDACS;AAUpB;IARC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,wBAAwB;QACrC,OAAO,EAAE,CAAC;KACX,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,IAAA,uBAAK,GAAE;IACP,IAAA,qBAAG,EAAC,CAAC,CAAC;;gDACW;AAUlB;IARC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,6BAA6B;QAC1C,OAAO,EAAE,CAAC;KACX,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,IAAA,uBAAK,GAAE;IACP,IAAA,qBAAG,EAAC,CAAC,CAAC;;iDACY;AASnB;IAPC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,0BAA0B;QACvC,OAAO,EAAE,QAAQ;QACjB,IAAI,EAAE,kCAAe;KACtB,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAM,EAAC,kCAAe,CAAC;;8CACC;AAQzB;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,qDAAqD;QAClE,OAAO,EAAE,SAAS;KACnB,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;8CACK;AAQhB;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,uDAAuD;QACpE,OAAO,EAAE,WAAW;KACrB,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;kDACS"}
@@ -92,7 +92,7 @@ __decorate([
92
92
  description: 'Timestamp of the change',
93
93
  example: '2024-01-01T00:00:00Z',
94
94
  }),
95
- (0, typeorm_1.Column)({ type: 'datetime2', default: () => 'GETDATE()' }),
95
+ (0, typeorm_1.Column)({ type: 'datetime2', default: () => 'SYSUTCDATETIME()' }),
96
96
  __metadata("design:type", Date)
97
97
  ], AuditLog.prototype, "changedAt", void 0);
98
98
  exports.AuditLog = AuditLog = __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"audit-log.entity.js","sourceRoot":"","sources":["../../../src/entities/audit-log.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAAiE;AACjE,6CAA8C;AAE9C,IAAY,eAIX;AAJD,WAAY,eAAe;IACzB,oCAAiB,CAAA;IACjB,oCAAiB,CAAA;IACjB,oCAAiB,CAAA;AACnB,CAAC,EAJW,eAAe,+BAAf,eAAe,QAI1B;AAGM,IAAM,QAAQ,GAAd,MAAM,QAAQ;IAGnB,EAAE,CAAS;IAIX,UAAU,CAAS;IAOnB,QAAQ,CAAS;IAYjB,MAAM,CAAkB;IAQxB,OAAO,CAAU;IASjB,UAAU,CAAU;IAQpB,SAAS,CAAU;IAOnB,SAAS,CAAO;CACjB,CAAA;AA3DY,4BAAQ;AAGnB;IAFC,IAAA,qBAAW,EAAC,EAAE,WAAW,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IACxD,IAAA,gCAAsB,GAAE;;oCACd;AAIX;IAFC,IAAA,qBAAW,EAAC,EAAE,WAAW,EAAE,2BAA2B,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;IAC7E,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;;4CACvB;AAOnB;IALC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,gCAAgC;QAC7C,OAAO,EAAE,EAAE;KACZ,CAAC;IACD,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;;0CACP;AAYjB;IAVC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,0BAA0B;QACvC,OAAO,EAAE,QAAQ;QACjB,IAAI,EAAE,eAAe;KACtB,CAAC;IACD,IAAA,gBAAM,EAAC;QACN,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,eAAe,CAAC,MAAM;KAChC,CAAC;;wCACsB;AAQxB;IANC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,mCAAmC;QAChD,OAAO,EAAE,4CAA4C;QACrD,QAAQ,EAAE,IAAI;KACf,CAAC;IACD,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;yCAC3C;AASjB;IAPC,IAAA,qBAAW,EAAC;QACX,WAAW,EACT,+EAA+E;QACjF,OAAO,EAAE,UAAU;QACnB,QAAQ,EAAE,IAAI;KACf,CAAC;IACD,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;4CACtC;AAQpB;IANC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,6BAA6B;QAC1C,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,IAAI;KACf,CAAC;IACD,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;2CACrB;AAOnB;IALC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,yBAAyB;QACtC,OAAO,EAAE,sBAAsB;KAChC,CAAC;IACD,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;8BAC/C,IAAI;2CAAC;mBA1DL,QAAQ;IADpB,IAAA,gBAAM,EAAC,UAAU,CAAC;GACN,QAAQ,CA2DpB"}
1
+ {"version":3,"file":"audit-log.entity.js","sourceRoot":"","sources":["../../../src/entities/audit-log.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAAiE;AACjE,6CAA8C;AAE9C,IAAY,eAIX;AAJD,WAAY,eAAe;IACzB,oCAAiB,CAAA;IACjB,oCAAiB,CAAA;IACjB,oCAAiB,CAAA;AACnB,CAAC,EAJW,eAAe,+BAAf,eAAe,QAI1B;AAGM,IAAM,QAAQ,GAAd,MAAM,QAAQ;IAGnB,EAAE,CAAS;IAIX,UAAU,CAAS;IAOnB,QAAQ,CAAS;IAYjB,MAAM,CAAkB;IAQxB,OAAO,CAAU;IASjB,UAAU,CAAU;IAQpB,SAAS,CAAU;IAOnB,SAAS,CAAO;CACjB,CAAA;AA3DY,4BAAQ;AAGnB;IAFC,IAAA,qBAAW,EAAC,EAAE,WAAW,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IACxD,IAAA,gCAAsB,GAAE;;oCACd;AAIX;IAFC,IAAA,qBAAW,EAAC,EAAE,WAAW,EAAE,2BAA2B,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;IAC7E,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;;4CACvB;AAOnB;IALC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,gCAAgC;QAC7C,OAAO,EAAE,EAAE;KACZ,CAAC;IACD,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;;0CACP;AAYjB;IAVC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,0BAA0B;QACvC,OAAO,EAAE,QAAQ;QACjB,IAAI,EAAE,eAAe;KACtB,CAAC;IACD,IAAA,gBAAM,EAAC;QACN,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,eAAe,CAAC,MAAM;KAChC,CAAC;;wCACsB;AAQxB;IANC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,mCAAmC;QAChD,OAAO,EAAE,4CAA4C;QACrD,QAAQ,EAAE,IAAI;KACf,CAAC;IACD,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;yCAC3C;AASjB;IAPC,IAAA,qBAAW,EAAC;QACX,WAAW,EACT,+EAA+E;QACjF,OAAO,EAAE,UAAU;QACnB,QAAQ,EAAE,IAAI;KACf,CAAC;IACD,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;4CACtC;AAQpB;IANC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,6BAA6B;QAC1C,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,IAAI;KACf,CAAC;IACD,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;2CACrB;AAOnB;IALC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,yBAAyB;QACtC,OAAO,EAAE,sBAAsB;KAChC,CAAC;IACD,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,kBAAkB,EAAE,CAAC;8BACtD,IAAI;2CAAC;mBA1DL,QAAQ;IADpB,IAAA,gBAAM,EAAC,UAAU,CAAC;GACN,QAAQ,CA2DpB"}