@event-nest/postgresql 4.0.1 → 5.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@event-nest/postgresql",
3
- "version": "4.0.1",
3
+ "version": "5.0.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",
@@ -22,7 +22,7 @@
22
22
  "postgresql"
23
23
  ],
24
24
  "peerDependencies": {
25
- "@nestjs/common": "^^10.0.0 || ^11.0.0",
25
+ "@nestjs/common": "^10.0.0 || ^11.0.0",
26
26
  "@nestjs/core": "^10.0.0 || ^11.0.0",
27
27
  "pg": "^8.14.1",
28
28
  "reflect-metadata": "^0.1.12 || ^0.2.0",
@@ -35,7 +35,8 @@
35
35
  "es-toolkit": "^1.32.0",
36
36
  "knex": "^3.1.0",
37
37
  "tslib": "^2.3.0",
38
- "@event-nest/core": "4.0.1"
38
+ "@event-nest/core": "5.0.0"
39
39
  },
40
+ "packageManager": "pnpm@10.29.2",
40
41
  "types": "./src/index.d.ts"
41
42
  }
package/src/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export * from "./lib/event-nest-postgresql.module";
2
2
  export * from "./lib/postgresql-module-options";
3
+ export * from "./lib/schema-configuration";
3
4
  export * from "./lib/storage/postgresql-event-store";
package/src/index.js CHANGED
@@ -3,5 +3,6 @@ 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/schema-configuration"), exports);
6
7
  tslib_1.__exportStar(require("./lib/storage/postgresql-event-store"), exports);
7
8
  //# 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;AAChD,+EAAqD"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/postgresql/src/index.ts"],"names":[],"mappings":";;;AAAA,6EAAmD;AACnD,0EAAgD;AAChD,qEAA2C;AAC3C,+EAAqD"}
@@ -6,11 +6,18 @@ const es_toolkit_1 = require("es-toolkit");
6
6
  const knex_1 = require("knex");
7
7
  const schema_configuration_1 = require("./schema-configuration");
8
8
  const postgresql_event_store_1 = require("./storage/postgresql-event-store");
9
+ const postgresql_snapshot_store_1 = require("./storage/postgresql-snapshot-store");
9
10
  const table_initializer_1 = require("./table-initializer");
10
11
  const KNEX_CONNECTION = Symbol("EVENT_NEST_KNEX_CONNECTION");
11
12
  class ModuleProviders {
12
13
  static create(options) {
13
14
  return [
15
+ {
16
+ provide: schema_configuration_1.SchemaConfiguration,
17
+ useFactory: () => {
18
+ return new schema_configuration_1.SchemaConfiguration(options.schemaName, options.aggregatesTableName, options.eventsTableName, options.snapshotTableName);
19
+ }
20
+ },
14
21
  {
15
22
  provide: core_1.DomainEventEmitter,
16
23
  useFactory: () => {
@@ -22,17 +29,31 @@ class ModuleProviders {
22
29
  useValue: buildKnexConnection(options)
23
30
  },
24
31
  {
25
- inject: [core_1.DomainEventEmitter, KNEX_CONNECTION],
32
+ inject: [KNEX_CONNECTION, schema_configuration_1.SchemaConfiguration],
33
+ provide: core_1.SNAPSHOT_STORE,
34
+ useFactory: (knexConnection, schemaConfiguration) => {
35
+ const { snapshotStrategy, snapshotTableName } = options;
36
+ if (Boolean(snapshotStrategy) !== Boolean(snapshotTableName)) {
37
+ throw new Error("To use snapshots, both 'snapshotStrategy' and 'snapshotTableName' must be provided.");
38
+ }
39
+ if (!snapshotTableName || !snapshotStrategy) {
40
+ return new core_1.NoOpSnapshotStore();
41
+ }
42
+ return new postgresql_snapshot_store_1.PostgreSQLSnapshotStore(snapshotStrategy, schemaConfiguration.schemaAwareSnapshotTable, knexConnection);
43
+ }
44
+ },
45
+ {
46
+ inject: [core_1.DomainEventEmitter, KNEX_CONNECTION, core_1.SNAPSHOT_STORE, schema_configuration_1.SchemaConfiguration],
26
47
  provide: core_1.EVENT_STORE,
27
- useFactory: (eventEmitter, knexConnection) => {
28
- return new postgresql_event_store_1.PostgreSQLEventStore(eventEmitter, options.schemaName, options.aggregatesTableName, options.eventsTableName, knexConnection);
48
+ useFactory: (eventEmitter, knexConnection, snapshotStore, schemaConfiguration) => {
49
+ return new postgresql_event_store_1.PostgreSQLEventStore(eventEmitter, snapshotStore, schemaConfiguration, knexConnection);
29
50
  }
30
51
  },
31
52
  {
32
- inject: [KNEX_CONNECTION],
53
+ inject: [KNEX_CONNECTION, schema_configuration_1.SchemaConfiguration],
33
54
  provide: table_initializer_1.TableInitializer,
34
- useFactory: (knexConnection) => {
35
- return new table_initializer_1.TableInitializer(new schema_configuration_1.SchemaConfiguration(options.schemaName, options.aggregatesTableName, options.eventsTableName), (0, es_toolkit_1.isNil)(options.ensureTablesExist) ? false : options.ensureTablesExist, knexConnection);
55
+ useFactory: (knexConnection, schemaConfiguration) => {
56
+ return new table_initializer_1.TableInitializer(schemaConfiguration, (0, es_toolkit_1.isNil)(options.ensureTablesExist) ? false : options.ensureTablesExist, knexConnection);
36
57
  }
37
58
  }
38
59
  ];
@@ -45,6 +66,13 @@ class ModuleProviders {
45
66
  return await options.useFactory(...parameters);
46
67
  }
47
68
  };
69
+ const schemaConfigurationProvider = {
70
+ inject: ["EVENT_NEST_PG_OPTIONS"],
71
+ provide: schema_configuration_1.SchemaConfiguration,
72
+ useFactory: (options) => {
73
+ return new schema_configuration_1.SchemaConfiguration(options.schemaName, options.aggregatesTableName, options.eventsTableName, options.snapshotTableName);
74
+ }
75
+ };
48
76
  const emitterProvider = {
49
77
  inject: ["EVENT_NEST_PG_OPTIONS"],
50
78
  provide: core_1.DomainEventEmitter,
@@ -60,20 +88,42 @@ class ModuleProviders {
60
88
  }
61
89
  };
62
90
  const eventStoreProvider = {
63
- inject: ["EVENT_NEST_PG_OPTIONS", core_1.DomainEventEmitter, KNEX_CONNECTION],
91
+ inject: [core_1.DomainEventEmitter, KNEX_CONNECTION, core_1.SNAPSHOT_STORE, schema_configuration_1.SchemaConfiguration],
64
92
  provide: core_1.EVENT_STORE,
65
- useFactory: (options, emitter, knexConnection) => {
66
- return new postgresql_event_store_1.PostgreSQLEventStore(emitter, options.schemaName, options.aggregatesTableName, options.eventsTableName, knexConnection);
93
+ useFactory: (emitter, knexConnection, snapshotStore, schemaConfiguration) => {
94
+ return new postgresql_event_store_1.PostgreSQLEventStore(emitter, snapshotStore, schemaConfiguration, knexConnection);
67
95
  }
68
96
  };
69
97
  const tableInitializerProvider = {
70
- inject: [KNEX_CONNECTION, "EVENT_NEST_PG_OPTIONS"],
98
+ inject: [KNEX_CONNECTION, "EVENT_NEST_PG_OPTIONS", schema_configuration_1.SchemaConfiguration],
71
99
  provide: table_initializer_1.TableInitializer,
72
- useFactory: (knexConnection, options) => {
73
- return new table_initializer_1.TableInitializer(new schema_configuration_1.SchemaConfiguration(options.schemaName, options.aggregatesTableName, options.eventsTableName), (0, es_toolkit_1.isNil)(options.ensureTablesExist) ? false : options.ensureTablesExist, knexConnection);
100
+ useFactory: (knexConnection, options, schemaConfiguration) => {
101
+ return new table_initializer_1.TableInitializer(schemaConfiguration, (0, es_toolkit_1.isNil)(options.ensureTablesExist) ? false : options.ensureTablesExist, knexConnection);
102
+ }
103
+ };
104
+ const snapshotStoreProvider = {
105
+ inject: ["EVENT_NEST_PG_OPTIONS", KNEX_CONNECTION, schema_configuration_1.SchemaConfiguration],
106
+ provide: core_1.SNAPSHOT_STORE,
107
+ useFactory: (options, knexConnection, schemaConfiguration) => {
108
+ const { snapshotStrategy, snapshotTableName } = options;
109
+ if (Boolean(snapshotStrategy) !== Boolean(snapshotTableName)) {
110
+ throw new Error("To use snapshots, both 'snapshotStrategy' and 'snapshotTableName' must be provided.");
111
+ }
112
+ if (!snapshotTableName || !snapshotStrategy) {
113
+ return new core_1.NoOpSnapshotStore();
114
+ }
115
+ return new postgresql_snapshot_store_1.PostgreSQLSnapshotStore(snapshotStrategy, schemaConfiguration.schemaAwareSnapshotTable, knexConnection);
74
116
  }
75
117
  };
76
- return [optionsProvider, knexProvider, emitterProvider, eventStoreProvider, tableInitializerProvider];
118
+ return [
119
+ optionsProvider,
120
+ knexProvider,
121
+ emitterProvider,
122
+ eventStoreProvider,
123
+ tableInitializerProvider,
124
+ snapshotStoreProvider,
125
+ schemaConfigurationProvider
126
+ ];
77
127
  }
78
128
  }
79
129
  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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"}
@@ -1,4 +1,4 @@
1
- import { CoreModuleOptions } from "@event-nest/core";
1
+ import { CoreModuleOptions, SnapshotStrategy } from "@event-nest/core";
2
2
  export interface ConnectionPoolOptions {
3
3
  acquireTimeoutMillis?: number;
4
4
  afterCreate?: Function;
@@ -20,7 +20,7 @@ export interface PostgreSQLModuleAsyncOptions {
20
20
  inject?: any[];
21
21
  useFactory: (...parameters: any[]) => PostgreSQLModuleOptions | Promise<PostgreSQLModuleOptions>;
22
22
  }
23
- export interface PostgreSQLModuleOptions extends CoreModuleOptions {
23
+ export type PostgreSQLModuleOptions = CoreModuleOptions & (SnapshotsDisabled | SnapshotsEnabled) & {
24
24
  /**
25
25
  * The name of the table which will be used to store the aggregate root rows.
26
26
  */
@@ -53,8 +53,25 @@ export interface PostgreSQLModuleOptions extends CoreModuleOptions {
53
53
  * provide a string representation of your certificate and set the rejectUnauthorized flag to true.
54
54
  */
55
55
  ssl?: SslOptions;
56
- }
56
+ };
57
57
  export interface SslOptions {
58
58
  certificate?: string;
59
59
  rejectUnauthorized: boolean;
60
60
  }
61
+ type SnapshotsDisabled = {
62
+ snapshotStrategy?: undefined;
63
+ snapshotTableName?: undefined;
64
+ };
65
+ type SnapshotsEnabled = {
66
+ /**
67
+ * The snapshot strategy to use for determining when snapshots should be created for aggregate roots.
68
+ * See {@link SnapshotStrategy} for more information.
69
+ */
70
+ snapshotStrategy: SnapshotStrategy;
71
+ /**
72
+ * The name of the table which will be used to store the aggregate snapshots.
73
+ * You can omit this option if you do not want to use snapshots optimization.
74
+ */
75
+ snapshotTableName: string;
76
+ };
77
+ export {};
@@ -5,7 +5,8 @@ export declare class SchemaConfiguration {
5
5
  private readonly _schema;
6
6
  private readonly _aggregatesTable;
7
7
  private readonly _eventsTable;
8
- constructor(_schema: string, _aggregatesTable: string, _eventsTable: string);
8
+ private readonly _snapshotTable?;
9
+ constructor(_schema: string, _aggregatesTable: string, _eventsTable: string, _snapshotTable?: string | undefined);
9
10
  get aggregatesTable(): string;
10
11
  get eventsTable(): string;
11
12
  get schema(): string;
@@ -17,4 +18,9 @@ export declare class SchemaConfiguration {
17
18
  * The schema-aware events table name (schema.eventsTable)
18
19
  */
19
20
  get schemaAwareEventsTable(): string;
21
+ /**
22
+ * The schema-aware snapshots table name (schema.snapshotTable)
23
+ */
24
+ get schemaAwareSnapshotTable(): string | undefined;
25
+ get snapshotTable(): string | undefined;
20
26
  }
@@ -5,10 +5,11 @@ exports.SchemaConfiguration = void 0;
5
5
  * A configuration class which holds the schema, aggregates table, and events table names for the PostgreSQL database.
6
6
  */
7
7
  class SchemaConfiguration {
8
- constructor(_schema, _aggregatesTable, _eventsTable) {
8
+ constructor(_schema, _aggregatesTable, _eventsTable, _snapshotTable) {
9
9
  this._schema = _schema;
10
10
  this._aggregatesTable = _aggregatesTable;
11
11
  this._eventsTable = _eventsTable;
12
+ this._snapshotTable = _snapshotTable;
12
13
  }
13
14
  get aggregatesTable() {
14
15
  return this._aggregatesTable;
@@ -31,6 +32,17 @@ class SchemaConfiguration {
31
32
  get schemaAwareEventsTable() {
32
33
  return this._schema + "." + this._eventsTable;
33
34
  }
35
+ /**
36
+ * The schema-aware snapshots table name (schema.snapshotTable)
37
+ */
38
+ get schemaAwareSnapshotTable() {
39
+ if (!this._snapshotTable)
40
+ return undefined;
41
+ return this._schema + "." + this._snapshotTable;
42
+ }
43
+ get snapshotTable() {
44
+ return this._snapshotTable;
45
+ }
34
46
  }
35
47
  exports.SchemaConfiguration = SchemaConfiguration;
36
48
  //# sourceMappingURL=schema-configuration.js.map
@@ -1 +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
+ {"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,EACpB,cAAuB;QAHvB,YAAO,GAAP,OAAO,CAAQ;QACf,qBAAgB,GAAhB,gBAAgB,CAAQ;QACxB,iBAAY,GAAZ,YAAY,CAAQ;QACpB,mBAAc,GAAd,cAAc,CAAS;IACzC,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;IAED;;OAEG;IACH,IAAI,wBAAwB;QACxB,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE,OAAO,SAAS,CAAC;QAC3C,OAAO,IAAI,CAAC,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC;IACpD,CAAC;IAED,IAAI,aAAa;QACb,OAAO,IAAI,CAAC,cAAc,CAAC;IAC/B,CAAC;CACJ;AA7CD,kDA6CC"}
@@ -1,27 +1,21 @@
1
- import { AbstractEventStore, AggregateRoot, AggregateRootClass, DomainEventEmitter, StoredAggregateRoot, StoredEvent } from "@event-nest/core";
1
+ import { AbstractEventStore, AggregateRoot, AggregateRootClass, AggregateRootSnapshot, DomainEventEmitter, StoredAggregateRoot, StoredEvent } from "@event-nest/core";
2
2
  import { knex } from "knex";
3
3
  import { SchemaConfiguration } from "../schema-configuration";
4
+ import { PostgreSQLSnapshotStore } from "./postgresql-snapshot-store";
4
5
  export declare class PostgreSQLEventStore extends AbstractEventStore {
5
6
  private readonly _knexConnection;
6
7
  private readonly _logger;
7
8
  private readonly _schemaConfiguration;
8
- constructor(eventEmitter: DomainEventEmitter, schemaName: string, aggregatesTableName: string, eventsTableName: string, _knexConnection: knex.Knex);
9
- /**
10
- * @deprecated Use {@link schemaConfiguration} instead. It will be removed in version 5.x
11
- */
12
- get aggregatesTableName(): string;
13
- /**
14
- * @deprecated Use {@link schemaConfiguration} instead. It will be removed in version 5.x
15
- */
16
- get eventsTableName(): string;
9
+ constructor(eventEmitter: DomainEventEmitter, snapshotStore: PostgreSQLSnapshotStore, schemaConfiguration: SchemaConfiguration, _knexConnection: knex.Knex);
17
10
  get schemaConfiguration(): SchemaConfiguration;
18
- /**
19
- * @deprecated Use {@link schemaConfiguration} instead. It will be removed in version 5.x
20
- */
21
- get schemaName(): string;
22
11
  findAggregateRootVersion(id: string): Promise<number>;
23
12
  findByAggregateRootId<T extends AggregateRoot>(aggregateRootClass: AggregateRootClass<T>, id: string): Promise<Array<StoredEvent>>;
24
13
  findByAggregateRootIds<T extends AggregateRoot>(aggregateRootClass: AggregateRootClass<T>, ids: string[]): Promise<Record<string, Array<StoredEvent>>>;
14
+ findWithSnapshot<T extends AggregateRoot>(aggregateRootClass: AggregateRootClass<T>, id: string): Promise<{
15
+ events: Array<StoredEvent>;
16
+ snapshot?: AggregateRootSnapshot<T>;
17
+ }>;
25
18
  generateEntityId(): Promise<string>;
26
19
  save(events: Array<StoredEvent>, aggregate: StoredAggregateRoot): Promise<Array<StoredEvent>>;
20
+ private findEvents;
27
21
  }
@@ -5,35 +5,16 @@ const core_1 = require("@event-nest/core");
5
5
  const common_1 = require("@nestjs/common");
6
6
  const es_toolkit_1 = require("es-toolkit");
7
7
  const node_crypto_1 = require("node:crypto");
8
- const schema_configuration_1 = require("../schema-configuration");
9
8
  class PostgreSQLEventStore extends core_1.AbstractEventStore {
10
- constructor(eventEmitter, schemaName, aggregatesTableName, eventsTableName, _knexConnection) {
11
- super(eventEmitter);
9
+ constructor(eventEmitter, snapshotStore, schemaConfiguration, _knexConnection) {
10
+ super(eventEmitter, snapshotStore);
12
11
  this._knexConnection = _knexConnection;
13
12
  this._logger = new common_1.Logger(PostgreSQLEventStore.name);
14
- this._schemaConfiguration = new schema_configuration_1.SchemaConfiguration(schemaName, aggregatesTableName, eventsTableName);
15
- }
16
- /**
17
- * @deprecated Use {@link schemaConfiguration} instead. It will be removed in version 5.x
18
- */
19
- get aggregatesTableName() {
20
- return this.schemaConfiguration.aggregatesTable;
21
- }
22
- /**
23
- * @deprecated Use {@link schemaConfiguration} instead. It will be removed in version 5.x
24
- */
25
- get eventsTableName() {
26
- return this.schemaConfiguration.eventsTable;
13
+ this._schemaConfiguration = schemaConfiguration;
27
14
  }
28
15
  get schemaConfiguration() {
29
16
  return this._schemaConfiguration;
30
17
  }
31
- /**
32
- * @deprecated Use {@link schemaConfiguration} instead. It will be removed in version 5.x
33
- */
34
- get schemaName() {
35
- return this.schemaConfiguration.schema;
36
- }
37
18
  async findAggregateRootVersion(id) {
38
19
  const aggregate = await this._knexConnection(this._schemaConfiguration.schemaAwareAggregatesTable)
39
20
  .select("version")
@@ -45,26 +26,12 @@ class PostgreSQLEventStore extends core_1.AbstractEventStore {
45
26
  return aggregate.version;
46
27
  }
47
28
  async findByAggregateRootId(aggregateRootClass, id) {
48
- const startedAt = Date.now();
49
29
  const aggregateRootName = (0, core_1.getAggregateRootName)(aggregateRootClass);
50
30
  if ((0, es_toolkit_1.isNil)(aggregateRootName)) {
51
31
  this._logger.error(`Missing aggregate root name for class: ${aggregateRootClass.name}. Use the @AggregateRootName decorator.`);
52
32
  throw new core_1.MissingAggregateRootNameException(aggregateRootClass.name);
53
33
  }
54
- const rows = await this._knexConnection(this._schemaConfiguration.schemaAwareEventsTable)
55
- .select("*")
56
- .where({
57
- aggregate_root_id: id,
58
- aggregate_root_name: aggregateRootName
59
- });
60
- const duration = Date.now() - startedAt;
61
- this._logger.debug(`Finding events for aggregate ${id} took ${duration}ms`);
62
- if (rows.length > 0) {
63
- return rows.map((row) => {
64
- 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);
65
- });
66
- }
67
- return [];
34
+ return this.findEvents(id, aggregateRootName);
68
35
  }
69
36
  async findByAggregateRootIds(aggregateRootClass, ids) {
70
37
  const aggregateRootName = (0, core_1.getAggregateRootName)(aggregateRootClass);
@@ -87,6 +54,30 @@ class PostgreSQLEventStore extends core_1.AbstractEventStore {
87
54
  }
88
55
  return grouped;
89
56
  }
57
+ async findWithSnapshot(aggregateRootClass, id) {
58
+ const aggregateRootName = (0, core_1.getAggregateRootName)(aggregateRootClass);
59
+ if ((0, es_toolkit_1.isNil)(aggregateRootName)) {
60
+ this._logger.error(`Missing aggregate root name for class: ${aggregateRootClass.name}. Use the @AggregateRootName decorator.`);
61
+ throw new core_1.MissingAggregateRootNameException(aggregateRootClass.name);
62
+ }
63
+ const snapshotRevision = (0, core_1.getAggregateRootSnapshotRevision)(aggregateRootClass);
64
+ if ((0, es_toolkit_1.isNil)(snapshotRevision)) {
65
+ this._logger.error(`Missing snapshot revision for class: ${aggregateRootClass.name}. Use the @AggregateRootConfig decorator to set the snapshotRevision.`);
66
+ throw new core_1.AggregateClassNotSnapshotAwareException(aggregateRootName);
67
+ }
68
+ const snapshot = await this._snapshotStore.findLatestSnapshotByAggregateId(id);
69
+ if (!snapshot) {
70
+ return { events: await this.findByAggregateRootId(aggregateRootClass, id), snapshot: undefined };
71
+ }
72
+ if (snapshot.revision != snapshotRevision) {
73
+ throw new core_1.SnapshotRevisionMismatchException(aggregateRootName);
74
+ }
75
+ const events = await this.findEvents(id, aggregateRootName, snapshot.aggregateRootVersion);
76
+ return {
77
+ events,
78
+ snapshot: snapshot.payload
79
+ };
80
+ }
90
81
  generateEntityId() {
91
82
  return Promise.resolve((0, node_crypto_1.randomUUID)());
92
83
  }
@@ -152,6 +143,25 @@ class PostgreSQLEventStore extends core_1.AbstractEventStore {
152
143
  this._logger.debug(`Saving events for aggregate ${aggregate.id} took ${duration}ms`);
153
144
  return events;
154
145
  }
146
+ async findEvents(id, aggregateRootName, minVersion) {
147
+ const startedAt = Date.now();
148
+ let query = this._knexConnection(this._schemaConfiguration.schemaAwareEventsTable).select("*").where({
149
+ aggregate_root_id: id,
150
+ aggregate_root_name: aggregateRootName
151
+ });
152
+ if (!(0, es_toolkit_1.isNil)(minVersion)) {
153
+ query = query.andWhere("aggregate_root_version", ">", minVersion);
154
+ }
155
+ const rows = await query;
156
+ const duration = Date.now() - startedAt;
157
+ this._logger.debug(`Finding events for aggregate ${id} took ${duration}ms`);
158
+ if (rows.length > 0) {
159
+ return rows.map((row) => {
160
+ 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);
161
+ });
162
+ }
163
+ return [];
164
+ }
155
165
  }
156
166
  exports.PostgreSQLEventStore = PostgreSQLEventStore;
157
167
  //# sourceMappingURL=postgresql-event-store.js.map
@@ -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,11 @@
1
+ import { AbstractSnapshotStore, SnapshotStrategy, StoredSnapshot } from "@event-nest/core";
2
+ import knex from "knex";
3
+ export declare class PostgreSQLSnapshotStore extends AbstractSnapshotStore {
4
+ private readonly schemaAwareSnapshotTable;
5
+ private readonly _knexConnection;
6
+ private readonly _logger;
7
+ constructor(snapshotStrategy: SnapshotStrategy, schemaAwareSnapshotTable: string, _knexConnection: knex.Knex);
8
+ findLatestSnapshotByAggregateId(id: string): Promise<StoredSnapshot | undefined>;
9
+ generateEntityId(): Promise<string>;
10
+ save(snapshot: StoredSnapshot): Promise<StoredSnapshot | undefined>;
11
+ }
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ var PostgreSQLSnapshotStore_1;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.PostgreSQLSnapshotStore = void 0;
5
+ const tslib_1 = require("tslib");
6
+ const core_1 = require("@event-nest/core");
7
+ const common_1 = require("@nestjs/common");
8
+ const es_toolkit_1 = require("es-toolkit");
9
+ const knex_1 = require("knex");
10
+ const node_crypto_1 = require("node:crypto");
11
+ let PostgreSQLSnapshotStore = PostgreSQLSnapshotStore_1 = class PostgreSQLSnapshotStore extends core_1.AbstractSnapshotStore {
12
+ constructor(snapshotStrategy, schemaAwareSnapshotTable, _knexConnection) {
13
+ super(snapshotStrategy);
14
+ this.schemaAwareSnapshotTable = schemaAwareSnapshotTable;
15
+ this._knexConnection = _knexConnection;
16
+ this._logger = new common_1.Logger(PostgreSQLSnapshotStore_1.name);
17
+ }
18
+ async findLatestSnapshotByAggregateId(id) {
19
+ const row = await this._knexConnection(this.schemaAwareSnapshotTable)
20
+ .select("*")
21
+ .where("aggregate_root_id", id)
22
+ .orderBy("aggregate_root_version", "desc")
23
+ .first();
24
+ if ((0, es_toolkit_1.isNil)(row)) {
25
+ return undefined;
26
+ }
27
+ return core_1.StoredSnapshot.create(row.id, row.aggregate_root_version, row.revision, row.payload, row.aggregate_root_id);
28
+ }
29
+ generateEntityId() {
30
+ return Promise.resolve((0, node_crypto_1.randomUUID)());
31
+ }
32
+ async save(snapshot) {
33
+ const snapshotRow = {
34
+ aggregate_root_id: snapshot.aggregateRootId,
35
+ aggregate_root_version: snapshot.aggregateRootVersion,
36
+ id: snapshot.id,
37
+ payload: JSON.stringify(snapshot.payload),
38
+ revision: snapshot.revision
39
+ };
40
+ const startedAt = Date.now();
41
+ await this._knexConnection(this.schemaAwareSnapshotTable).insert(snapshotRow);
42
+ const duration = Date.now() - startedAt;
43
+ this._logger.debug(`Saving snapshot for aggregate ${snapshot.id} took ${duration}ms`);
44
+ return snapshot;
45
+ }
46
+ };
47
+ exports.PostgreSQLSnapshotStore = PostgreSQLSnapshotStore;
48
+ exports.PostgreSQLSnapshotStore = PostgreSQLSnapshotStore = PostgreSQLSnapshotStore_1 = tslib_1.__decorate([
49
+ (0, common_1.Injectable)(),
50
+ tslib_1.__metadata("design:paramtypes", [core_1.SnapshotStrategy, String, Function])
51
+ ], PostgreSQLSnapshotStore);
52
+ //# sourceMappingURL=postgresql-snapshot-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgresql-snapshot-store.js","sourceRoot":"","sources":["../../../../../../libs/postgresql/src/lib/storage/postgresql-snapshot-store.ts"],"names":[],"mappings":";;;;;AAAA,2CAA2F;AAC3F,2CAAoD;AACpD,2CAAmC;AACnC,+BAAwB;AACxB,6CAAyC;AAKlC,IAAM,uBAAuB,+BAA7B,MAAM,uBAAwB,SAAQ,4BAAqB;IAG9D,YACI,gBAAkC,EACjB,wBAAgC,EAChC,eAA0B;QAE3C,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAHP,6BAAwB,GAAxB,wBAAwB,CAAQ;QAChC,oBAAe,GAAf,eAAe,CAAW;QAG3C,IAAI,CAAC,OAAO,GAAG,IAAI,eAAM,CAAC,yBAAuB,CAAC,IAAI,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,+BAA+B,CAAC,EAAU;QAC5C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,eAAe,CAAc,IAAI,CAAC,wBAAwB,CAAC;aAC7E,MAAM,CAAC,GAAG,CAAC;aACX,KAAK,CAAC,mBAAmB,EAAE,EAAE,CAAC;aAC9B,OAAO,CAAC,wBAAwB,EAAE,MAAM,CAAC;aACzC,KAAK,EAAE,CAAC;QAEb,IAAI,IAAA,kBAAK,EAAC,GAAG,CAAC,EAAE,CAAC;YACb,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,OAAO,qBAAc,CAAC,MAAM,CACxB,GAAG,CAAC,EAAE,EACN,GAAG,CAAC,sBAAsB,EAC1B,GAAG,CAAC,QAAQ,EACZ,GAAG,CAAC,OAAO,EACX,GAAG,CAAC,iBAAiB,CACxB,CAAC;IACN,CAAC;IAED,gBAAgB;QACZ,OAAO,OAAO,CAAC,OAAO,CAAC,IAAA,wBAAU,GAAE,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,QAAwB;QAC/B,MAAM,WAAW,GAAgB;YAC7B,iBAAiB,EAAE,QAAQ,CAAC,eAAe;YAC3C,sBAAsB,EAAE,QAAQ,CAAC,oBAAoB;YACrD,EAAE,EAAE,QAAQ,CAAC,EAAE;YACf,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC;YACzC,QAAQ,EAAE,QAAQ,CAAC,QAAQ;SAC9B,CAAC;QAEF,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,IAAI,CAAC,eAAe,CAAc,IAAI,CAAC,wBAAwB,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAE3F,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,iCAAiC,QAAQ,CAAC,EAAE,SAAS,QAAQ,IAAI,CAAC,CAAC;QAEtF,OAAO,QAAQ,CAAC;IACpB,CAAC;CACJ,CAAA;AArDY,0DAAuB;kCAAvB,uBAAuB;IADnC,IAAA,mBAAU,GAAE;6CAKa,uBAAgB;GAJ7B,uBAAuB,CAqDnC"}
@@ -0,0 +1,7 @@
1
+ export interface SnapshotRow {
2
+ aggregate_root_id: string;
3
+ aggregate_root_version: number;
4
+ id: string;
5
+ payload: string;
6
+ revision: number;
7
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=snapshot-row.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot-row.js","sourceRoot":"","sources":["../../../../../../libs/postgresql/src/lib/storage/snapshot-row.ts"],"names":[],"mappings":""}
@@ -25,13 +25,18 @@ let TableInitializer = TableInitializer_1 = class TableInitializer {
25
25
  return;
26
26
  }
27
27
  try {
28
- const [hasAggregatesTable, hasEventsTable] = await Promise.all([
28
+ const [hasAggregatesTable, hasEventsTable, hasSnapshotTable] = await Promise.all([
29
29
  this._knexConnection.schema
30
30
  .withSchema(this._schemaConfiguration.schema)
31
31
  .hasTable(this._schemaConfiguration.aggregatesTable),
32
32
  this._knexConnection.schema
33
33
  .withSchema(this._schemaConfiguration.schema)
34
- .hasTable(this._schemaConfiguration.eventsTable)
34
+ .hasTable(this._schemaConfiguration.eventsTable),
35
+ this.schemaConfiguration.snapshotTable
36
+ ? this._knexConnection.schema
37
+ .withSchema(this._schemaConfiguration.schema)
38
+ .hasTable(this.schemaConfiguration.snapshotTable)
39
+ : Promise.resolve(false)
35
40
  ]);
36
41
  if (hasAggregatesTable) {
37
42
  this._logger.log("Skipping aggregates table initialization. Table already exists");
@@ -66,6 +71,27 @@ let TableInitializer = TableInitializer_1 = class TableInitializer {
66
71
  });
67
72
  this._logger.log("Events table created successfully");
68
73
  }
74
+ if (hasSnapshotTable) {
75
+ this._logger.log("Skipping snapshot table initialization. Table already exists");
76
+ }
77
+ else {
78
+ if (this._schemaConfiguration.snapshotTable) {
79
+ await this._knexConnection.schema
80
+ .withSchema(this._schemaConfiguration.schema)
81
+ .createTable(this._schemaConfiguration.snapshotTable, (table) => {
82
+ table.uuid("id").primary();
83
+ table.uuid("aggregate_root_id").notNullable();
84
+ table.integer("aggregate_root_version").notNullable();
85
+ table.jsonb("payload").notNullable();
86
+ table.integer("revision").notNullable();
87
+ table
88
+ .foreign("aggregate_root_id")
89
+ .references("id")
90
+ .inTable(this._schemaConfiguration.schemaAwareAggregatesTable);
91
+ });
92
+ this._logger.log("Snapshot table created successfully");
93
+ }
94
+ }
69
95
  }
70
96
  catch (error) {
71
97
  this._logger.error("Event Nest table initialization has failed. Tables will have to be created manually.", error);
@@ -1 +1 @@
1
- {"version":3,"file":"table-initializer.js","sourceRoot":"","sources":["../../../../../libs/postgresql/src/lib/table-initializer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"table-initializer.js","sourceRoot":"","sources":["../../../../../libs/postgresql/src/lib/table-initializer.ts"],"names":[],"mappings":"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"}