@event-nest/postgresql 3.4.0 → 3.4.2
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.4.
|
|
3
|
+
"version": "3.4.2",
|
|
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",
|
|
@@ -32,10 +32,10 @@
|
|
|
32
32
|
"typings": "./src/index.d.ts",
|
|
33
33
|
"dependencies": {
|
|
34
34
|
"class-transformer": "^0.5.1",
|
|
35
|
+
"es-toolkit": "^1.32.0",
|
|
35
36
|
"knex": "^3.1.0",
|
|
36
|
-
"radash": "^12.1.0",
|
|
37
37
|
"tslib": "^2.3.0",
|
|
38
|
-
"@event-nest/core": "3.4.
|
|
38
|
+
"@event-nest/core": "3.4.2"
|
|
39
39
|
},
|
|
40
40
|
"types": "./src/index.d.ts"
|
|
41
41
|
}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ModuleProviders = void 0;
|
|
4
4
|
const core_1 = require("@event-nest/core");
|
|
5
|
+
const es_toolkit_1 = require("es-toolkit");
|
|
5
6
|
const knex_1 = require("knex");
|
|
6
7
|
const schema_configuration_1 = require("./schema-configuration");
|
|
7
8
|
const postgresql_event_store_1 = require("./storage/postgresql-event-store");
|
|
@@ -31,7 +32,7 @@ class ModuleProviders {
|
|
|
31
32
|
inject: [KNEX_CONNECTION],
|
|
32
33
|
provide: table_initializer_1.TableInitializer,
|
|
33
34
|
useFactory: (knexConnection) => {
|
|
34
|
-
return new table_initializer_1.TableInitializer(new schema_configuration_1.SchemaConfiguration(options.schemaName, options.aggregatesTableName, options.eventsTableName), (0,
|
|
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);
|
|
35
36
|
}
|
|
36
37
|
}
|
|
37
38
|
];
|
|
@@ -69,7 +70,7 @@ class ModuleProviders {
|
|
|
69
70
|
inject: [KNEX_CONNECTION, "EVENT_NEST_PG_OPTIONS"],
|
|
70
71
|
provide: table_initializer_1.TableInitializer,
|
|
71
72
|
useFactory: (knexConnection, options) => {
|
|
72
|
-
return new table_initializer_1.TableInitializer(new schema_configuration_1.SchemaConfiguration(options.schemaName, options.aggregatesTableName, options.eventsTableName), (0,
|
|
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);
|
|
73
74
|
}
|
|
74
75
|
};
|
|
75
76
|
return [optionsProvider, knexProvider, emitterProvider, eventStoreProvider, tableInitializerProvider];
|
|
@@ -77,7 +78,7 @@ class ModuleProviders {
|
|
|
77
78
|
}
|
|
78
79
|
exports.ModuleProviders = ModuleProviders;
|
|
79
80
|
function buildKnexConnection(options) {
|
|
80
|
-
if ((0,
|
|
81
|
+
if ((0, es_toolkit_1.isNil)(options.ssl)) {
|
|
81
82
|
return (0, knex_1.knex)({
|
|
82
83
|
client: "pg",
|
|
83
84
|
connection: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module-providers.js","sourceRoot":"","sources":["../../../../../libs/postgresql/src/lib/module-providers.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"module-providers.js","sourceRoot":"","sources":["../../../../../libs/postgresql/src/lib/module-providers.ts"],"names":[],"mappings":";;;AAAA,2CAAmE;AAEnE,2CAAmC;AACnC,+BAA4B;AAG5B,iEAA6D;AAC7D,6EAAwE;AACxE,2DAAuD;AAEvD,MAAM,eAAe,GAAG,MAAM,CAAC,4BAA4B,CAAC,CAAC;AAE7D,MAAa,eAAe;IACxB,MAAM,CAAC,MAAM,CAAC,OAAgC;QAC1C,OAAO;YACH;gBACI,OAAO,EAAE,yBAAkB;gBAC3B,UAAU,EAAE,GAAG,EAAE;oBACb,OAAO,IAAI,yBAAkB,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;gBACnE,CAAC;aACJ;YACD;gBACI,OAAO,EAAE,eAAe;gBACxB,QAAQ,EAAE,mBAAmB,CAAC,OAAO,CAAC;aACzC;YACD;gBACI,MAAM,EAAE,CAAC,yBAAkB,EAAE,eAAe,CAAC;gBAC7C,OAAO,EAAE,kBAAW;gBACpB,UAAU,EAAE,CAAC,YAAgC,EAAE,cAAyB,EAAE,EAAE;oBACxE,OAAO,IAAI,6CAAoB,CAC3B,YAAY,EACZ,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,mBAAmB,EAC3B,OAAO,CAAC,eAAe,EACvB,cAAc,CACjB,CAAC;gBACN,CAAC;aACJ;YACD;gBACI,MAAM,EAAE,CAAC,eAAe,CAAC;gBACzB,OAAO,EAAE,oCAAgB;gBACzB,UAAU,EAAE,CAAC,cAAyB,EAAE,EAAE;oBACtC,OAAO,IAAI,oCAAgB,CACvB,IAAI,0CAAmB,CACnB,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,mBAAmB,EAC3B,OAAO,CAAC,eAAe,CAC1B,EACD,IAAA,kBAAK,EAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,EACpE,cAAc,CACjB,CAAC;gBACN,CAAC;aACJ;SACJ,CAAC;IACN,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,OAAqC;QACpD,MAAM,eAAe,GAAG;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO,EAAE,uBAAuB;YAChC,UAAU,EAAE,KAAK,EAAE,GAAG,UAAqB,EAAE,EAAE;gBAC3C,OAAO,MAAM,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC,CAAC;YACnD,CAAC;SACJ,CAAC;QAEF,MAAM,eAAe,GAAG;YACpB,MAAM,EAAE,CAAC,uBAAuB,CAAC;YACjC,OAAO,EAAE,yBAAkB;YAC3B,UAAU,EAAE,CAAC,OAAgC,EAAE,EAAE;gBAC7C,OAAO,IAAI,yBAAkB,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;YACnE,CAAC;SACJ,CAAC;QAEF,MAAM,YAAY,GAAG;YACjB,MAAM,EAAE,CAAC,uBAAuB,CAAC;YACjC,OAAO,EAAE,eAAe;YACxB,UAAU,EAAE,CAAC,OAAgC,EAAa,EAAE;gBACxD,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAC;YACxC,CAAC;SACJ,CAAC;QAEF,MAAM,kBAAkB,GAAG;YACvB,MAAM,EAAE,CAAC,uBAAuB,EAAE,yBAAkB,EAAE,eAAe,CAAC;YACtE,OAAO,EAAE,kBAAW;YACpB,UAAU,EAAE,CAAC,OAAgC,EAAE,OAA2B,EAAE,cAAyB,EAAE,EAAE;gBACrG,OAAO,IAAI,6CAAoB,CAC3B,OAAO,EACP,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,mBAAmB,EAC3B,OAAO,CAAC,eAAe,EACvB,cAAc,CACjB,CAAC;YACN,CAAC;SACJ,CAAC;QAEF,MAAM,wBAAwB,GAAG;YAC7B,MAAM,EAAE,CAAC,eAAe,EAAE,uBAAuB,CAAC;YAClD,OAAO,EAAE,oCAAgB;YACzB,UAAU,EAAE,CAAC,cAAyB,EAAE,OAAgC,EAAE,EAAE;gBACxE,OAAO,IAAI,oCAAgB,CACvB,IAAI,0CAAmB,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,mBAAmB,EAAE,OAAO,CAAC,eAAe,CAAC,EACjG,IAAA,kBAAK,EAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,EACpE,cAAc,CACjB,CAAC;YACN,CAAC;SACJ,CAAC;QAEF,OAAO,CAAC,eAAe,EAAE,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,wBAAwB,CAAC,CAAC;IAC1G,CAAC;CACJ;AAjGD,0CAiGC;AACD,SAAS,mBAAmB,CAAC,OAAgC;IACzD,IAAI,IAAA,kBAAK,EAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,IAAA,WAAI,EAAC;YACR,MAAM,EAAE,IAAI;YACZ,UAAU,EAAE;gBACR,gBAAgB,EAAE,OAAO,CAAC,aAAa;aAC1C;SACJ,CAAC,CAAC;IACP,CAAC;IAED,OAAO,IAAA,WAAI,EAAC;QACR,MAAM,EAAE,IAAI;QACZ,UAAU,EAAE;YACR,gBAAgB,EAAE,OAAO,CAAC,aAAa;YACvC,GAAG,EAAE;gBACD,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW;gBAC3B,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB;aACrD;SACJ;KACJ,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.PostgreSQLEventStore = void 0;
|
|
4
4
|
const core_1 = require("@event-nest/core");
|
|
5
5
|
const common_1 = require("@nestjs/common");
|
|
6
|
+
const es_toolkit_1 = require("es-toolkit");
|
|
6
7
|
const node_crypto_1 = require("node:crypto");
|
|
7
8
|
const schema_configuration_1 = require("../schema-configuration");
|
|
8
9
|
class PostgreSQLEventStore extends core_1.AbstractEventStore {
|
|
@@ -38,7 +39,7 @@ class PostgreSQLEventStore extends core_1.AbstractEventStore {
|
|
|
38
39
|
.select("version")
|
|
39
40
|
.where("id", id)
|
|
40
41
|
.first();
|
|
41
|
-
if ((0,
|
|
42
|
+
if ((0, es_toolkit_1.isNil)(aggregate)) {
|
|
42
43
|
return -1;
|
|
43
44
|
}
|
|
44
45
|
return aggregate.version;
|
|
@@ -46,7 +47,7 @@ class PostgreSQLEventStore extends core_1.AbstractEventStore {
|
|
|
46
47
|
async findByAggregateRootId(aggregateRootClass, id) {
|
|
47
48
|
const startedAt = Date.now();
|
|
48
49
|
const aggregateRootName = (0, core_1.getAggregateRootName)(aggregateRootClass);
|
|
49
|
-
if ((0,
|
|
50
|
+
if ((0, es_toolkit_1.isNil)(aggregateRootName)) {
|
|
50
51
|
this._logger.error(`Missing aggregate root name for class: ${aggregateRootClass.name}. Use the @AggregateRootName decorator.`);
|
|
51
52
|
throw new core_1.MissingAggregateRootNameException(aggregateRootClass.name);
|
|
52
53
|
}
|
|
@@ -67,7 +68,7 @@ class PostgreSQLEventStore extends core_1.AbstractEventStore {
|
|
|
67
68
|
}
|
|
68
69
|
async findByAggregateRootIds(aggregateRootClass, ids) {
|
|
69
70
|
const aggregateRootName = (0, core_1.getAggregateRootName)(aggregateRootClass);
|
|
70
|
-
if ((0,
|
|
71
|
+
if ((0, es_toolkit_1.isNil)(aggregateRootName)) {
|
|
71
72
|
this._logger.error(`Missing aggregate root name for class: ${aggregateRootClass.name}. Use the @AggregateRootName decorator.`);
|
|
72
73
|
throw new core_1.MissingAggregateRootNameException(aggregateRootClass.name);
|
|
73
74
|
}
|
|
@@ -79,7 +80,7 @@ class PostgreSQLEventStore extends core_1.AbstractEventStore {
|
|
|
79
80
|
});
|
|
80
81
|
const grouped = {};
|
|
81
82
|
for (const row of rows) {
|
|
82
|
-
if ((0,
|
|
83
|
+
if ((0, es_toolkit_1.isNil)(grouped[row.aggregate_root_id])) {
|
|
83
84
|
grouped[row.aggregate_root_id] = [];
|
|
84
85
|
}
|
|
85
86
|
grouped[row.aggregate_root_id].push(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));
|
|
@@ -103,10 +104,10 @@ class PostgreSQLEventStore extends core_1.AbstractEventStore {
|
|
|
103
104
|
.forUpdate()
|
|
104
105
|
.where("id", aggregate.id)
|
|
105
106
|
.first();
|
|
106
|
-
let foundAggregate = (0,
|
|
107
|
+
let foundAggregate = (0, es_toolkit_1.isNil)(aggregateInDatabase)
|
|
107
108
|
? undefined
|
|
108
109
|
: new core_1.StoredAggregateRoot(aggregateInDatabase.id, aggregateInDatabase.version);
|
|
109
|
-
if ((0,
|
|
110
|
+
if ((0, es_toolkit_1.isNil)(foundAggregate)) {
|
|
110
111
|
aggregate.version = 0;
|
|
111
112
|
this._logger.debug(`Aggregate ${aggregate.id} does not exist. Will save it`);
|
|
112
113
|
await trx(this._schemaConfiguration.schemaAwareAggregatesTable).insert({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgresql-event-store.js","sourceRoot":"","sources":["../../../../../../libs/postgresql/src/lib/storage/postgresql-event-store.ts"],"names":[],"mappings":";;;AAAA,
|
|
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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"}
|