@event-nest/postgresql 3.2.0 → 3.3.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@event-nest/postgresql",
3
- "version": "3.2.0",
3
+ "version": "3.3.0",
4
4
  "license": "MIT",
5
5
  "description": "Event sourcing module for NestJS using PostgreSQL. It uses SQL tables and transactions to store events",
6
6
  "author": "Nick Tsitlakidis",
@@ -34,7 +34,7 @@
34
34
  "class-transformer": "^0.5.1",
35
35
  "knex": "^3.1.0",
36
36
  "tslib": "^2.3.0",
37
- "@event-nest/core": "3.2.0"
37
+ "@event-nest/core": "3.3.0"
38
38
  },
39
39
  "types": "./src/index.d.ts"
40
40
  }
package/src/index.d.ts CHANGED
@@ -1,2 +1,3 @@
1
1
  export * from "./lib/event-nest-postgresql.module";
2
2
  export * from "./lib/postgresql-module-options";
3
+ export * from "./lib/storage/postgresql-event-store";
package/src/index.js CHANGED
@@ -3,4 +3,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
4
  tslib_1.__exportStar(require("./lib/event-nest-postgresql.module"), exports);
5
5
  tslib_1.__exportStar(require("./lib/postgresql-module-options"), exports);
6
+ tslib_1.__exportStar(require("./lib/storage/postgresql-event-store"), exports);
6
7
  //# sourceMappingURL=index.js.map
package/src/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/postgresql/src/index.ts"],"names":[],"mappings":";;;AAAA,6EAAmD;AACnD,0EAAgD"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/postgresql/src/index.ts"],"names":[],"mappings":";;;AAAA,6EAAmD;AACnD,0EAAgD;AAChD,+EAAqD"}
@@ -3,7 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ModuleProviders = void 0;
4
4
  const core_1 = require("@event-nest/core");
5
5
  const knex_1 = require("knex");
6
+ const schema_configuration_1 = require("./schema-configuration");
6
7
  const postgresql_event_store_1 = require("./storage/postgresql-event-store");
8
+ const table_initializer_1 = require("./table-initializer");
7
9
  const KNEX_CONNECTION = Symbol("EVENT_NEST_KNEX_CONNECTION");
8
10
  function buildKnexConnection(options) {
9
11
  if ((0, core_1.isNil)(options.ssl)) {
@@ -44,6 +46,13 @@ class ModuleProviders {
44
46
  useFactory: (eventEmitter, knexConnection) => {
45
47
  return new postgresql_event_store_1.PostgreSQLEventStore(eventEmitter, options.schemaName, options.aggregatesTableName, options.eventsTableName, knexConnection);
46
48
  }
49
+ },
50
+ {
51
+ inject: [KNEX_CONNECTION],
52
+ provide: table_initializer_1.TableInitializer,
53
+ useFactory: (knexConnection) => {
54
+ return new table_initializer_1.TableInitializer(new schema_configuration_1.SchemaConfiguration(options.schemaName, options.aggregatesTableName, options.eventsTableName), (0, core_1.isNil)(options.ensureTablesExist) ? false : options.ensureTablesExist, knexConnection);
55
+ }
47
56
  }
48
57
  ];
49
58
  }
@@ -76,7 +85,14 @@ class ModuleProviders {
76
85
  return new postgresql_event_store_1.PostgreSQLEventStore(emitter, options.schemaName, options.aggregatesTableName, options.eventsTableName, knexConnection);
77
86
  }
78
87
  };
79
- return [optionsProvider, knexProvider, emitterProvider, eventStoreProvider];
88
+ const tableInitializerProvider = {
89
+ inject: [KNEX_CONNECTION, "EVENT_NEST_PG_OPTIONS"],
90
+ provide: table_initializer_1.TableInitializer,
91
+ useFactory: (knexConnection, options) => {
92
+ return new table_initializer_1.TableInitializer(new schema_configuration_1.SchemaConfiguration(options.schemaName, options.aggregatesTableName, options.eventsTableName), (0, core_1.isNil)(options.ensureTablesExist) ? false : options.ensureTablesExist, knexConnection);
93
+ }
94
+ };
95
+ return [optionsProvider, knexProvider, emitterProvider, eventStoreProvider, tableInitializerProvider];
80
96
  }
81
97
  }
82
98
  exports.ModuleProviders = ModuleProviders;
@@ -1 +1 @@
1
- {"version":3,"file":"module-providers.js","sourceRoot":"","sources":["../../../../../libs/postgresql/src/lib/module-providers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"module-providers.js","sourceRoot":"","sources":["../../../../../libs/postgresql/src/lib/module-providers.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,12 @@ export interface PostgreSQLModuleOptions extends CoreModuleOptions {
12
12
  * A valid connection string which will be used to connect to the PostgreSQL server.
13
13
  */
14
14
  connectionUri: string;
15
+ /**
16
+ * A flag to determine if the tables should be created if they do not exist.
17
+ * This setting requires a user with the necessary permissions to create tables.
18
+ * By default, this setting is disabled.
19
+ */
20
+ ensureTablesExist?: boolean;
15
21
  /**
16
22
  * The name of the table which will be used to store the event rows
17
23
  */
@@ -0,0 +1,20 @@
1
+ /**
2
+ * A configuration class which holds the schema, aggregates table, and events table names for the PostgreSQL database.
3
+ */
4
+ export declare class SchemaConfiguration {
5
+ private readonly _schema;
6
+ private readonly _aggregatesTable;
7
+ private readonly _eventsTable;
8
+ constructor(_schema: string, _aggregatesTable: string, _eventsTable: string);
9
+ get aggregatesTable(): string;
10
+ get eventsTable(): string;
11
+ get schema(): string;
12
+ /**
13
+ * The schema-aware aggregates table name (schema.aggregatesTable)
14
+ */
15
+ get schemaAwareAggregatesTable(): string;
16
+ /**
17
+ * The schema-aware events table name (schema.eventsTable)
18
+ */
19
+ get schemaAwareEventsTable(): string;
20
+ }
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SchemaConfiguration = void 0;
4
+ /**
5
+ * A configuration class which holds the schema, aggregates table, and events table names for the PostgreSQL database.
6
+ */
7
+ class SchemaConfiguration {
8
+ constructor(_schema, _aggregatesTable, _eventsTable) {
9
+ this._schema = _schema;
10
+ this._aggregatesTable = _aggregatesTable;
11
+ this._eventsTable = _eventsTable;
12
+ }
13
+ get aggregatesTable() {
14
+ return this._aggregatesTable;
15
+ }
16
+ get eventsTable() {
17
+ return this._eventsTable;
18
+ }
19
+ get schema() {
20
+ return this._schema;
21
+ }
22
+ /**
23
+ * The schema-aware aggregates table name (schema.aggregatesTable)
24
+ */
25
+ get schemaAwareAggregatesTable() {
26
+ return this._schema + "." + this._aggregatesTable;
27
+ }
28
+ /**
29
+ * The schema-aware events table name (schema.eventsTable)
30
+ */
31
+ get schemaAwareEventsTable() {
32
+ return this._schema + "." + this._eventsTable;
33
+ }
34
+ }
35
+ exports.SchemaConfiguration = SchemaConfiguration;
36
+ //# sourceMappingURL=schema-configuration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-configuration.js","sourceRoot":"","sources":["../../../../../libs/postgresql/src/lib/schema-configuration.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,MAAa,mBAAmB;IAC5B,YACqB,OAAe,EACf,gBAAwB,EACxB,YAAoB;QAFpB,YAAO,GAAP,OAAO,CAAQ;QACf,qBAAgB,GAAhB,gBAAgB,CAAQ;QACxB,iBAAY,GAAZ,YAAY,CAAQ;IACtC,CAAC;IAEJ,IAAI,eAAe;QACf,OAAO,IAAI,CAAC,gBAAgB,CAAC;IACjC,CAAC;IAED,IAAI,WAAW;QACX,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IAED,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,IAAI,0BAA0B;QAC1B,OAAO,IAAI,CAAC,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC;IACtD,CAAC;IAED;;OAEG;IACH,IAAI,sBAAsB;QACtB,OAAO,IAAI,CAAC,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC;IAClD,CAAC;CACJ;AAhCD,kDAgCC"}
@@ -1,16 +1,23 @@
1
1
  import { AbstractEventStore, AggregateRoot, AggregateRootClass, DomainEventEmitter, StoredAggregateRoot, StoredEvent } from "@event-nest/core";
2
- import * as knex from "knex";
2
+ import { knex } from "knex";
3
+ import { SchemaConfiguration } from "../schema-configuration";
3
4
  export declare class PostgreSQLEventStore extends AbstractEventStore {
4
- private _schemaName;
5
- private _aggregatesTableName;
6
- private _eventsTableName;
7
5
  private readonly _knexConnection;
8
- private readonly _fullAggregatesTableName;
9
- private readonly _fullEventsTableName;
10
6
  private readonly _logger;
11
- constructor(eventEmitter: DomainEventEmitter, _schemaName: string, _aggregatesTableName: string, _eventsTableName: string, _knexConnection: knex.Knex);
7
+ private readonly _schemaConfiguration;
8
+ constructor(eventEmitter: DomainEventEmitter, schemaName: string, aggregatesTableName: string, eventsTableName: string, _knexConnection: knex.Knex);
9
+ /**
10
+ * @deprecated Use {@link schemaConfiguration} instead
11
+ */
12
12
  get aggregatesTableName(): string;
13
+ /**
14
+ * @deprecated Use {@link schemaConfiguration} instead
15
+ */
13
16
  get eventsTableName(): string;
17
+ get schemaConfiguration(): SchemaConfiguration;
18
+ /**
19
+ * @deprecated Use {@link schemaConfiguration} instead
20
+ */
14
21
  get schemaName(): string;
15
22
  findAggregateRootVersion(id: string): Promise<number>;
16
23
  findByAggregateRootId<T extends AggregateRoot>(aggregateRootClass: AggregateRootClass<T>, id: string): Promise<Array<StoredEvent>>;
@@ -4,28 +4,37 @@ exports.PostgreSQLEventStore = void 0;
4
4
  const core_1 = require("@event-nest/core");
5
5
  const common_1 = require("@nestjs/common");
6
6
  const crypto_1 = require("crypto");
7
+ const schema_configuration_1 = require("../schema-configuration");
7
8
  class PostgreSQLEventStore extends core_1.AbstractEventStore {
8
- constructor(eventEmitter, _schemaName, _aggregatesTableName, _eventsTableName, _knexConnection) {
9
+ constructor(eventEmitter, schemaName, aggregatesTableName, eventsTableName, _knexConnection) {
9
10
  super(eventEmitter);
10
- this._schemaName = _schemaName;
11
- this._aggregatesTableName = _aggregatesTableName;
12
- this._eventsTableName = _eventsTableName;
13
11
  this._knexConnection = _knexConnection;
14
12
  this._logger = new common_1.Logger(PostgreSQLEventStore.name);
15
- this._fullAggregatesTableName = this._schemaName + "." + this._aggregatesTableName;
16
- this._fullEventsTableName = this._schemaName + "." + this._eventsTableName;
13
+ this._schemaConfiguration = new schema_configuration_1.SchemaConfiguration(schemaName, aggregatesTableName, eventsTableName);
17
14
  }
15
+ /**
16
+ * @deprecated Use {@link schemaConfiguration} instead
17
+ */
18
18
  get aggregatesTableName() {
19
- return this._aggregatesTableName;
19
+ return this.schemaConfiguration.aggregatesTable;
20
20
  }
21
+ /**
22
+ * @deprecated Use {@link schemaConfiguration} instead
23
+ */
21
24
  get eventsTableName() {
22
- return this._eventsTableName;
25
+ return this.schemaConfiguration.eventsTable;
23
26
  }
27
+ get schemaConfiguration() {
28
+ return this._schemaConfiguration;
29
+ }
30
+ /**
31
+ * @deprecated Use {@link schemaConfiguration} instead
32
+ */
24
33
  get schemaName() {
25
- return this._schemaName;
34
+ return this.schemaConfiguration.schema;
26
35
  }
27
36
  async findAggregateRootVersion(id) {
28
- const aggregate = await this._knexConnection(this._fullAggregatesTableName)
37
+ const aggregate = await this._knexConnection(this._schemaConfiguration.schemaAwareAggregatesTable)
29
38
  .select("version")
30
39
  .where("id", id)
31
40
  .first();
@@ -35,15 +44,20 @@ class PostgreSQLEventStore extends core_1.AbstractEventStore {
35
44
  return aggregate.version;
36
45
  }
37
46
  async findByAggregateRootId(aggregateRootClass, id) {
47
+ const startedAt = Date.now();
38
48
  const aggregateRootName = (0, core_1.getAggregateRootName)(aggregateRootClass);
39
49
  if ((0, core_1.isNil)(aggregateRootName)) {
40
50
  this._logger.error(`Missing aggregate root name for class: ${aggregateRootClass.name}. Use the @AggregateRootName decorator.`);
41
51
  throw new core_1.MissingAggregateRootNameException(aggregateRootClass.name);
42
52
  }
43
- const rows = await this._knexConnection(this._fullEventsTableName).select("*").where({
53
+ const rows = await this._knexConnection(this._schemaConfiguration.schemaAwareEventsTable)
54
+ .select("*")
55
+ .where({
44
56
  aggregate_root_id: id,
45
57
  aggregate_root_name: aggregateRootName
46
58
  });
59
+ const duration = Date.now() - startedAt;
60
+ this._logger.debug(`Finding events for aggregate ${id} took ${duration}ms`);
47
61
  if (rows.length > 0) {
48
62
  return rows.map((row) => {
49
63
  return core_1.StoredEvent.fromStorage(row.id, row.aggregate_root_id, row.event_name, row.created_at, row.aggregate_root_version, row.aggregate_root_name, row.payload);
@@ -57,7 +71,7 @@ class PostgreSQLEventStore extends core_1.AbstractEventStore {
57
71
  this._logger.error(`Missing aggregate root name for class: ${aggregateRootClass.name}. Use the @AggregateRootName decorator.`);
58
72
  throw new core_1.MissingAggregateRootNameException(aggregateRootClass.name);
59
73
  }
60
- const rows = await this._knexConnection(this._fullEventsTableName)
74
+ const rows = await this._knexConnection(this._schemaConfiguration.schemaAwareEventsTable)
61
75
  .select("*")
62
76
  .whereIn("aggregate_root_id", ids)
63
77
  .andWhere({
@@ -76,6 +90,7 @@ class PostgreSQLEventStore extends core_1.AbstractEventStore {
76
90
  return Promise.resolve((0, crypto_1.randomUUID)());
77
91
  }
78
92
  async save(events, aggregate) {
93
+ const startedAt = Date.now();
79
94
  if (events.length === 0) {
80
95
  return [];
81
96
  }
@@ -83,7 +98,7 @@ class PostgreSQLEventStore extends core_1.AbstractEventStore {
83
98
  let finalAggregate;
84
99
  try {
85
100
  await this._knexConnection.transaction(async (trx) => {
86
- const aggregateInDb = await trx(this._fullAggregatesTableName)
101
+ const aggregateInDb = await trx(this._schemaConfiguration.schemaAwareAggregatesTable)
87
102
  .select("*")
88
103
  .forUpdate()
89
104
  .where("id", aggregate.id)
@@ -94,7 +109,7 @@ class PostgreSQLEventStore extends core_1.AbstractEventStore {
94
109
  if ((0, core_1.isNil)(foundAggregate)) {
95
110
  aggregate.version = 0;
96
111
  this._logger.debug(`Aggregate ${aggregate.id} does not exist. Will save it`);
97
- await trx(this._fullAggregatesTableName).insert({
112
+ await trx(this._schemaConfiguration.schemaAwareAggregatesTable).insert({
98
113
  id: aggregate.id,
99
114
  version: aggregate.version
100
115
  });
@@ -122,8 +137,8 @@ class PostgreSQLEventStore extends core_1.AbstractEventStore {
122
137
  payload: JSON.stringify(ev.payload)
123
138
  };
124
139
  });
125
- await trx(this._fullEventsTableName).insert(mapped);
126
- await trx(this._fullAggregatesTableName)
140
+ await trx(this._schemaConfiguration.schemaAwareEventsTable).insert(mapped);
141
+ await trx(this._schemaConfiguration.schemaAwareAggregatesTable)
127
142
  .update("version", finalAggregate.version)
128
143
  .where("id", finalAggregate.id);
129
144
  });
@@ -132,6 +147,8 @@ class PostgreSQLEventStore extends core_1.AbstractEventStore {
132
147
  this._logger.error("Unable to complete transaction for aggregate root with id : " + aggregate.id);
133
148
  throw error;
134
149
  }
150
+ const duration = Date.now() - startedAt;
151
+ this._logger.debug(`Saving events for aggregate ${aggregate.id} took ${duration}ms`);
135
152
  return events;
136
153
  }
137
154
  }
@@ -1 +1 @@
1
- {"version":3,"file":"postgresql-event-store.js","sourceRoot":"","sources":["../../../../../../libs/postgresql/src/lib/storage/postgresql-event-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"postgresql-event-store.js","sourceRoot":"","sources":["../../../../../../libs/postgresql/src/lib/storage/postgresql-event-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { OnApplicationBootstrap } from "@nestjs/common";
2
+ import { knex } from "knex";
3
+ import { SchemaConfiguration } from "./schema-configuration";
4
+ export declare class TableInitializer implements OnApplicationBootstrap {
5
+ private readonly _schemaConfiguration;
6
+ private readonly _ensureTablesExist;
7
+ private readonly _knexConnection;
8
+ private readonly _logger;
9
+ constructor(_schemaConfiguration: SchemaConfiguration, _ensureTablesExist: boolean, _knexConnection: knex.Knex);
10
+ get ensureTablesExist(): boolean;
11
+ get schemaConfiguration(): SchemaConfiguration;
12
+ onApplicationBootstrap(): Promise<void>;
13
+ }
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ var TableInitializer_1;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.TableInitializer = void 0;
5
+ const tslib_1 = require("tslib");
6
+ const common_1 = require("@nestjs/common");
7
+ const knex_1 = require("knex");
8
+ const schema_configuration_1 = require("./schema-configuration");
9
+ let TableInitializer = TableInitializer_1 = class TableInitializer {
10
+ constructor(_schemaConfiguration, _ensureTablesExist, _knexConnection) {
11
+ this._schemaConfiguration = _schemaConfiguration;
12
+ this._ensureTablesExist = _ensureTablesExist;
13
+ this._knexConnection = _knexConnection;
14
+ this._logger = new common_1.Logger(TableInitializer_1.name);
15
+ }
16
+ get ensureTablesExist() {
17
+ return this._ensureTablesExist;
18
+ }
19
+ get schemaConfiguration() {
20
+ return this._schemaConfiguration;
21
+ }
22
+ async onApplicationBootstrap() {
23
+ if (!this._ensureTablesExist) {
24
+ this._logger.debug("Skipping table initialization. ensureTablesExist is set to false or missing");
25
+ return;
26
+ }
27
+ try {
28
+ const [hasAggregatesTable, hasEventsTable] = await Promise.all([
29
+ this._knexConnection.schema.hasTable(this._schemaConfiguration.aggregatesTable),
30
+ this._knexConnection.schema.hasTable(this._schemaConfiguration.eventsTable)
31
+ ]);
32
+ if (hasAggregatesTable) {
33
+ this._logger.log("Skipping aggregates table initialization. Table already exists");
34
+ }
35
+ else {
36
+ await this._knexConnection.schema.createTable(this._schemaConfiguration.aggregatesTable, (table) => {
37
+ table.uuid("id").primary();
38
+ table.integer("version").notNullable();
39
+ });
40
+ this._logger.log("Aggregates table created successfully");
41
+ }
42
+ if (hasEventsTable) {
43
+ this._logger.log("Skipping events table initialization. Table already exists");
44
+ }
45
+ else {
46
+ await this._knexConnection.schema.createTable(this._schemaConfiguration.eventsTable, (table) => {
47
+ table.uuid("id").primary();
48
+ table.uuid("aggregate_root_id").notNullable();
49
+ table.integer("aggregate_root_version").notNullable();
50
+ table.text("aggregate_root_name").notNullable();
51
+ table.text("event_name").notNullable();
52
+ table.jsonb("payload").notNullable();
53
+ table.timestamp("created_at", { useTz: true }).notNullable();
54
+ table.foreign("aggregate_root_id").references(`${this._schemaConfiguration.aggregatesTable}.id`);
55
+ });
56
+ this._logger.log("Events table created successfully");
57
+ }
58
+ }
59
+ catch (error) {
60
+ this._logger.error("Event Nest table initialization has failed. Tables will have to be created manually.", error);
61
+ }
62
+ }
63
+ };
64
+ exports.TableInitializer = TableInitializer;
65
+ exports.TableInitializer = TableInitializer = TableInitializer_1 = tslib_1.__decorate([
66
+ (0, common_1.Injectable)(),
67
+ tslib_1.__metadata("design:paramtypes", [schema_configuration_1.SchemaConfiguration, Boolean, Function])
68
+ ], TableInitializer);
69
+ //# sourceMappingURL=table-initializer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-initializer.js","sourceRoot":"","sources":["../../../../../libs/postgresql/src/lib/table-initializer.ts"],"names":[],"mappings":"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"}