@estgbue/mezgeb 0.0.30 → 0.0.31

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.
@@ -1,6 +1,11 @@
1
1
  import { DynamicModule } from '@nestjs/common';
2
+ export interface AuditClientModuleOptions {
3
+ /** Optional TypeORM connection name; defaults to the default connection. */
4
+ connectionName?: string;
5
+ /** Custom DataSource injection token; overrides connectionName when provided. */
6
+ dataSourceToken?: string | symbol;
7
+ }
2
8
  export declare class AuditClientModule {
3
- constructor();
4
- static register(connectionName?: string): DynamicModule;
9
+ static register(options?: AuditClientModuleOptions): DynamicModule;
5
10
  }
6
11
  //# sourceMappingURL=client.module.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.module.d.ts","sourceRoot":"","sources":["../../../libs/mezgeb/src/mezgeb/client/client.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAU,MAAM,gBAAgB,CAAC;AAUvD,qBAqBa,iBAAiB;;IAI5B,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,aAAa;CAuBxD"}
1
+ {"version":3,"file":"client.module.d.ts","sourceRoot":"","sources":["../../../libs/mezgeb/src/mezgeb/client/client.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAU,MAAM,gBAAgB,CAAC;AAUvD,MAAM,WAAW,wBAAwB;IACvC,4EAA4E;IAC5E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iFAAiF;IACjF,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACnC;AAED,qBACa,iBAAiB;IAC5B,MAAM,CAAC,QAAQ,CAAC,OAAO,GAAE,wBAA6B,GAAG,aAAa;CA0BvE"}
@@ -5,9 +5,6 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
6
  return c > 3 && r && Object.defineProperty(target, key, r), r;
7
7
  };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
8
  var AuditClientModule_1;
12
9
  Object.defineProperty(exports, "__esModule", { value: true });
13
10
  exports.AuditClientModule = void 0;
@@ -20,15 +17,14 @@ const client_audit_interceptor_1 = require("./client-audit.interceptor");
20
17
  const client_logger_config_1 = require("./client.logger.config");
21
18
  const client_subscriber_1 = require("./client.subscriber");
22
19
  let AuditClientModule = AuditClientModule_1 = class AuditClientModule {
23
- constructor() {
24
- console.log('Audit Client Module initialized');
25
- }
26
- static register(connectionName) {
20
+ static register(options = {}) {
21
+ var _a;
22
+ const dataSourceToken = (_a = options.dataSourceToken) !== null && _a !== void 0 ? _a : (0, typeorm_1.getDataSourceToken)(options.connectionName);
27
23
  return {
28
24
  module: AuditClientModule_1,
29
25
  imports: [
30
26
  microservices_1.ClientsModule.register([client_logger_config_1.auditLoggerConfig]),
31
- typeorm_1.TypeOrmModule.forFeature([], connectionName),
27
+ typeorm_1.TypeOrmModule.forFeature([], options.connectionName),
32
28
  ],
33
29
  providers: [
34
30
  core_1.Reflector,
@@ -39,34 +35,15 @@ let AuditClientModule = AuditClientModule_1 = class AuditClientModule {
39
35
  {
40
36
  provide: mezgeb_enum_1.AuditDatasource,
41
37
  useFactory: (dataSource) => dataSource,
42
- inject: [(0, typeorm_1.getDataSourceToken)(connectionName)],
38
+ inject: [dataSourceToken],
43
39
  },
44
40
  client_subscriber_1.ClientSubscriber,
45
41
  ],
46
- exports: [],
42
+ exports: [mezgeb_enum_1.AuditDatasource],
47
43
  };
48
44
  }
49
45
  };
50
46
  exports.AuditClientModule = AuditClientModule;
51
47
  exports.AuditClientModule = AuditClientModule = AuditClientModule_1 = __decorate([
52
- (0, common_1.Module)({
53
- imports: [
54
- microservices_1.ClientsModule.register([client_logger_config_1.auditLoggerConfig]),
55
- typeorm_1.TypeOrmModule.forFeature([]), // 👈 required even if no entities
56
- ],
57
- providers: [
58
- core_1.Reflector,
59
- {
60
- provide: core_1.APP_INTERCEPTOR,
61
- useClass: client_audit_interceptor_1.ClientLoggerInterceptor,
62
- },
63
- {
64
- provide: mezgeb_enum_1.AuditDatasource,
65
- useFactory: (dataSource) => dataSource,
66
- inject: [(0, typeorm_1.getDataSourceToken)()],
67
- },
68
- client_subscriber_1.ClientSubscriber,
69
- ],
70
- }),
71
- __metadata("design:paramtypes", [])
48
+ (0, common_1.Module)({})
72
49
  ], AuditClientModule);
@@ -73,5 +73,5 @@ __decorate([
73
73
  __metadata("design:type", Array)
74
74
  ], AuditLog.prototype, "commands", void 0);
75
75
  exports.AuditLog = AuditLog = __decorate([
76
- (0, typeorm_1.Entity)({ name: mezgeb_enum_1.AuditTableName, schema: mezgeb_enum_1.AuditTableSchema })
76
+ (0, typeorm_1.Entity)({ name: mezgeb_enum_1.AuditTableName, schema: mezgeb_enum_1.AuditTableSchema, })
77
77
  ], AuditLog);
@@ -0,0 +1,9 @@
1
+ import { QueryRunner } from "typeorm";
2
+ export declare class AuditLogMigrator {
3
+ private schema;
4
+ private auditLogCommandsTable;
5
+ private auditLogsTable;
6
+ up(queryRunner: QueryRunner): Promise<void>;
7
+ down(queryRunner: QueryRunner): Promise<void>;
8
+ }
9
+ //# sourceMappingURL=migrator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrator.d.ts","sourceRoot":"","sources":["../../../libs/mezgeb/src/mezgeb/listener/migrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAG,WAAW,EAAE,MAAM,SAAS,CAAC;AAGvC,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,qBAAqB,CAAgD;IAC7E,OAAO,CAAC,cAAc,CAAiC;IAE1C,EAAE,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IA8D3C,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAM7D"}
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.AuditLogMigrator = void 0;
13
+ const mezgeb_enum_1 = require("../mezgeb.enum");
14
+ class AuditLogMigrator {
15
+ constructor() {
16
+ // Schema and table names
17
+ this.schema = mezgeb_enum_1.AuditTableSchema !== null && mezgeb_enum_1.AuditTableSchema !== void 0 ? mezgeb_enum_1.AuditTableSchema : "audit";
18
+ this.auditLogCommandsTable = mezgeb_enum_1.AuditCommandTableName !== null && mezgeb_enum_1.AuditCommandTableName !== void 0 ? mezgeb_enum_1.AuditCommandTableName : "audit_log_commands";
19
+ this.auditLogsTable = mezgeb_enum_1.AuditTableName !== null && mezgeb_enum_1.AuditTableName !== void 0 ? mezgeb_enum_1.AuditTableName : "audit_logs";
20
+ }
21
+ up(queryRunner) {
22
+ return __awaiter(this, void 0, void 0, function* () {
23
+ // Create schema if not exists
24
+ yield queryRunner.query(`CREATE SCHEMA IF NOT EXISTS "${this.schema}"`);
25
+ // Create audit_log_commands table
26
+ yield queryRunner.query(`
27
+ CREATE TABLE IF NOT EXISTS "${this.schema}"."${this.auditLogCommandsTable}" (
28
+ "id" uuid NOT NULL DEFAULT uuid_generate_v4(),
29
+ "created_at" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(),
30
+ "deleted_at" TIMESTAMP WITH TIME ZONE,
31
+ "entity" jsonb NOT NULL,
32
+ "entity_id" text NOT NULL,
33
+ "entity_name" character varying NOT NULL,
34
+ "payload" jsonb,
35
+ "changes" jsonb,
36
+ "query_method" character varying NOT NULL,
37
+ "query" character varying,
38
+ "parameters" character varying array,
39
+ "status" character varying NOT NULL DEFAULT 'Draft',
40
+ "parent_id" uuid,
41
+ "audit_log_id" uuid,
42
+ CONSTRAINT "REL_12094509e8bc3a6bb091f2f198" UNIQUE ("parent_id"),
43
+ CONSTRAINT "PK_44241458edfa160fe415456abc6" PRIMARY KEY ("id")
44
+ )
45
+ `);
46
+ // Create audit_logs table
47
+ yield queryRunner.query(`
48
+ CREATE TABLE IF NOT EXISTS "${this.schema}"."${this.auditLogsTable}" (
49
+ "id" uuid NOT NULL DEFAULT uuid_generate_v4(),
50
+ "created_at" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(),
51
+ "updated_at" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(),
52
+ "request_method" character varying NOT NULL,
53
+ "application" character varying NOT NULL,
54
+ "module" character varying NOT NULL,
55
+ "request_body" jsonb,
56
+ "request_header" jsonb,
57
+ "status_code" integer NOT NULL,
58
+ "ip_address" character varying NOT NULL,
59
+ "execution_time" integer NOT NULL,
60
+ "status" character varying NOT NULL DEFAULT 'Draft',
61
+ "user" jsonb,
62
+ CONSTRAINT "PK_1bb179d048bbc581caa3b013439" PRIMARY KEY ("id")
63
+ )
64
+ `);
65
+ // Add foreign keys (will fail if the table already has them, so you may want to drop first or check)
66
+ yield queryRunner.query(`
67
+ ALTER TABLE "${this.schema}"."${this.auditLogCommandsTable}"
68
+ ADD CONSTRAINT IF NOT EXISTS "FK_12094509e8bc3a6bb091f2f1987"
69
+ FOREIGN KEY ("parent_id") REFERENCES "${this.schema}"."${this.auditLogCommandsTable}"("id")
70
+ ON DELETE NO ACTION ON UPDATE NO ACTION
71
+ `);
72
+ yield queryRunner.query(`
73
+ ALTER TABLE "${this.schema}"."${this.auditLogCommandsTable}"
74
+ ADD CONSTRAINT IF NOT EXISTS "FK_ec7bf138fb9f823c358f54e8ce7"
75
+ FOREIGN KEY ("audit_log_id") REFERENCES "${this.schema}"."${this.auditLogsTable}"("id")
76
+ ON DELETE CASCADE ON UPDATE NO ACTION
77
+ `);
78
+ });
79
+ }
80
+ down(queryRunner) {
81
+ return __awaiter(this, void 0, void 0, function* () {
82
+ yield queryRunner.query(`ALTER TABLE "${this.schema}"."${this.auditLogCommandsTable}" DROP CONSTRAINT IF EXISTS "FK_ec7bf138fb9f823c358f54e8ce7"`);
83
+ yield queryRunner.query(`ALTER TABLE "${this.schema}"."${this.auditLogCommandsTable}" DROP CONSTRAINT IF EXISTS "FK_12094509e8bc3a6bb091f2f1987"`);
84
+ yield queryRunner.query(`DROP TABLE IF EXISTS "${this.schema}"."${this.auditLogsTable}"`);
85
+ yield queryRunner.query(`DROP TABLE IF EXISTS "${this.schema}"."${this.auditLogCommandsTable}"`);
86
+ });
87
+ }
88
+ }
89
+ exports.AuditLogMigrator = AuditLogMigrator;
@@ -1 +1 @@
1
- {"version":3,"file":"audit-log.service.d.ts","sourceRoot":"","sources":["../../../../libs/mezgeb/src/mezgeb/listener/services/audit-log.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EACL,yBAAyB,EACzB,iBAAiB,EAClB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAGvE,qBACa,eAAe;IAGxB,OAAO,CAAC,kBAAkB;IAE1B,OAAO,CAAC,yBAAyB;gBAFzB,kBAAkB,EAAE,UAAU,CAAC,QAAQ,CAAC,EAExC,yBAAyB,EAAE,UAAU,CAAC,eAAe,CAAC;IAG1D,cAAc,CAAC,IAAI,EAAE,iBAAiB;IAKtC,iBAAiB,CAAC,OAAO,EAAE,yBAAyB;IAQpD,mBAAmB,CAAC,OAAO,EAAE,yBAAyB;CAG7D"}
1
+ {"version":3,"file":"audit-log.service.d.ts","sourceRoot":"","sources":["../../../../libs/mezgeb/src/mezgeb/listener/services/audit-log.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EACL,yBAAyB,EACzB,iBAAiB,EAClB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAIvE,qBACa,eAAe;IAGxB,OAAO,CAAC,kBAAkB;IAE1B,OAAO,CAAC,yBAAyB;gBAFzB,kBAAkB,EAAE,UAAU,CAAC,QAAQ,CAAC,EAExC,yBAAyB,EAAE,UAAU,CAAC,eAAe,CAAC;IAM1D,cAAc,CAAC,IAAI,EAAE,iBAAiB;IAKtC,iBAAiB,CAAC,OAAO,EAAE,yBAAyB;IAQpD,mBAAmB,CAAC,OAAO,EAAE,yBAAyB;CAG7D"}
@@ -27,10 +27,13 @@ const typeorm_1 = require("@nestjs/typeorm");
27
27
  const typeorm_2 = require("typeorm");
28
28
  const audit_log_entity_1 = require("../entities/audit-log.entity");
29
29
  const audit_log_command_entity_1 = require("../entities/audit-log-command.entity");
30
+ const migrator_1 = require("../migrator");
30
31
  let AuditLogService = class AuditLogService {
31
32
  constructor(auditLogRepository, auditLogCommandRepository) {
32
33
  this.auditLogRepository = auditLogRepository;
33
34
  this.auditLogCommandRepository = auditLogCommandRepository;
35
+ const migrator = new migrator_1.AuditLogMigrator();
36
+ migrator.up(this.auditLogRepository.manager.connection.createQueryRunner());
34
37
  }
35
38
  createAuditLog(data) {
36
39
  return __awaiter(this, void 0, void 0, function* () {
@@ -19,5 +19,7 @@ export declare const RecordInsertion = "record-insertion";
19
19
  export declare const RecordUpdate = "record-update";
20
20
  export declare const RecordDeletion = "record-delete";
21
21
  export declare const AuditTableName: string;
22
+ export declare const AuditCommandTableName: string;
22
23
  export declare const AuditTableSchema: string;
24
+ export declare const AuditDatabaseName: string;
23
25
  //# sourceMappingURL=mezgeb.enum.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mezgeb.enum.d.ts","sourceRoot":"","sources":["../../libs/mezgeb/src/mezgeb/mezgeb.enum.ts"],"names":[],"mappings":"AAAA,oBAAY,sBAAsB;IAChC,GAAG,QAAQ;IACX,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,KAAK,UAAU;CAChB;AAGD,eAAO,MAAM,eAAe,qBAAqB,CAAC;AAClD,eAAO,MAAM,0BAA0B,4BAA4B,CAAC;AACpE,eAAO,MAAM,mBAAmB,UAAU,CAAC;AAC3C,eAAO,MAAM,mBAAmB,oBAAoB,CAAC;AACrD,eAAO,MAAM,uBAAuB,yBAAyB,CAAC;AAC9D,eAAO,MAAM,mBAAmB,eAAe,CAAC;AAEhD,eAAO,MAAM,oBAAoB,2BAA2B,CAAC;AAC7D,eAAO,MAAM,kBAAkB,yBAAyB,CAAC;AACzD,eAAO,MAAM,oBAAoB,2BAA2B,CAAC;AAC7D,eAAO,MAAM,eAAe,qBAAqB,CAAC;AAClD,eAAO,MAAM,YAAY,kBAAkB,CAAC;AAC5C,eAAO,MAAM,cAAc,kBAAkB,CAAC;AAE9C,eAAO,MAAM,cAAc,QAA8C,CAAC;AAC1E,eAAO,MAAM,gBAAgB,QAA0C,CAAA"}
1
+ {"version":3,"file":"mezgeb.enum.d.ts","sourceRoot":"","sources":["../../libs/mezgeb/src/mezgeb/mezgeb.enum.ts"],"names":[],"mappings":"AAAA,oBAAY,sBAAsB;IAChC,GAAG,QAAQ;IACX,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,KAAK,UAAU;CAChB;AAGD,eAAO,MAAM,eAAe,qBAAqB,CAAC;AAClD,eAAO,MAAM,0BAA0B,4BAA4B,CAAC;AACpE,eAAO,MAAM,mBAAmB,UAAU,CAAC;AAC3C,eAAO,MAAM,mBAAmB,oBAAoB,CAAC;AACrD,eAAO,MAAM,uBAAuB,yBAAyB,CAAC;AAC9D,eAAO,MAAM,mBAAmB,eAAe,CAAC;AAEhD,eAAO,MAAM,oBAAoB,2BAA2B,CAAC;AAC7D,eAAO,MAAM,kBAAkB,yBAAyB,CAAC;AACzD,eAAO,MAAM,oBAAoB,2BAA2B,CAAC;AAC7D,eAAO,MAAM,eAAe,qBAAqB,CAAC;AAClD,eAAO,MAAM,YAAY,kBAAkB,CAAC;AAC5C,eAAO,MAAM,cAAc,kBAAkB,CAAC;AAE9C,eAAO,MAAM,cAAc,QAA8C,CAAC;AAC1E,eAAO,MAAM,qBAAqB,QAA0D,CAAC;AAC7F,eAAO,MAAM,gBAAgB,QAA0C,CAAA;AACvE,eAAO,MAAM,iBAAiB,QAAgD,CAAC"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
- var _a, _b;
2
+ var _a, _b, _c, _d;
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.AuditTableSchema = exports.AuditTableName = exports.RecordDeletion = exports.RecordUpdate = exports.RecordInsertion = exports.RollbackRequestAudit = exports.CommitRequestAudit = exports.RegisterRequestAudit = exports.DeadAuditRoutingKey = exports.AuditDeadLetterExchange = exports.AuditLoggerRMQTopic = exports.AuditLoggerRMQQueue = exports.ClientLoggerInterceptorKey = exports.AuditDatasource = exports.EAuditLogRequestMethod = void 0;
4
+ exports.AuditDatabaseName = exports.AuditTableSchema = exports.AuditCommandTableName = exports.AuditTableName = exports.RecordDeletion = exports.RecordUpdate = exports.RecordInsertion = exports.RollbackRequestAudit = exports.CommitRequestAudit = exports.RegisterRequestAudit = exports.DeadAuditRoutingKey = exports.AuditDeadLetterExchange = exports.AuditLoggerRMQTopic = exports.AuditLoggerRMQQueue = exports.ClientLoggerInterceptorKey = exports.AuditDatasource = exports.EAuditLogRequestMethod = void 0;
5
5
  var EAuditLogRequestMethod;
6
6
  (function (EAuditLogRequestMethod) {
7
7
  EAuditLogRequestMethod["GET"] = "GET";
@@ -24,4 +24,6 @@ exports.RecordInsertion = 'record-insertion';
24
24
  exports.RecordUpdate = 'record-update';
25
25
  exports.RecordDeletion = 'record-delete';
26
26
  exports.AuditTableName = (_a = process.env.AUDIT_LOG_TABLE) !== null && _a !== void 0 ? _a : 'audit_logs';
27
- exports.AuditTableSchema = (_b = process.env.AUDIT_LOC_SCHEMA) !== null && _b !== void 0 ? _b : "audit";
27
+ exports.AuditCommandTableName = (_b = process.env.AUDIT_COMMAND_TABLE) !== null && _b !== void 0 ? _b : 'audit_log_commands';
28
+ exports.AuditTableSchema = (_c = process.env.AUDIT_LOC_SCHEMA) !== null && _c !== void 0 ? _c : "audit";
29
+ exports.AuditDatabaseName = (_d = process.env.AUDIT_DATABASE_NAME) !== null && _d !== void 0 ? _d : 'audit_db';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@estgbue/mezgeb",
3
- "version": "0.0.30",
3
+ "version": "0.0.31",
4
4
  "main": "./src/index",
5
5
  "exports": {
6
6
  ".": "./dist/index.js"