@qrvey/data-persistence 0.5.20-76 → 0.5.22-1139-beta
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/dist/cjs/events/base.event.js +3 -0
- package/dist/cjs/events/base.event.js.map +1 -0
- package/dist/cjs/events/createdEntity.event.js +3 -0
- package/dist/cjs/events/createdEntity.event.js.map +1 -0
- package/dist/cjs/events/index.js +20 -0
- package/dist/cjs/events/index.js.map +1 -0
- package/dist/cjs/events/removeEntity.event.js +3 -0
- package/dist/cjs/events/removeEntity.event.js.map +1 -0
- package/dist/cjs/events/updatedEntity.event.js +3 -0
- package/dist/cjs/events/updatedEntity.event.js.map +1 -0
- package/dist/cjs/helpers/eventHelper.js +46 -0
- package/dist/cjs/helpers/eventHelper.js.map +1 -0
- package/dist/cjs/interfaces/entityDefinition.interface.js +3 -0
- package/dist/cjs/interfaces/entityDefinition.interface.js.map +1 -0
- package/dist/cjs/interfaces/index.js +1 -0
- package/dist/cjs/interfaces/index.js.map +1 -1
- package/dist/cjs/schemas/crudSchema.js.map +1 -1
- package/dist/cjs/services/crud.service.js +51 -3
- package/dist/cjs/services/crud.service.js.map +1 -1
- package/dist/cjs/services/eventEmitter.service.js +26 -0
- package/dist/cjs/services/eventEmitter.service.js.map +1 -0
- package/dist/cjs/utils/constants.js +2 -1
- package/dist/cjs/utils/constants.js.map +1 -1
- package/dist/esm/index.d.mts +22 -0
- package/dist/esm/index.mjs +113 -3
- package/dist/esm/index.mjs.map +1 -1
- package/dist/types/index.d.ts +22 -0
- package/package.json +3 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.event.js","sourceRoot":"","sources":["../../../src/events/base.event.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createdEntity.event.js","sourceRoot":"","sources":["../../../src/events/createdEntity.event.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./createdEntity.event"), exports);
|
|
18
|
+
__exportStar(require("./updatedEntity.event"), exports);
|
|
19
|
+
__exportStar(require("./removeEntity.event"), exports);
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/events/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAsC;AACtC,wDAAsC;AACtC,uDAAqC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"removeEntity.event.js","sourceRoot":"","sources":["../../../src/events/removeEntity.event.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"updatedEntity.event.js","sourceRoot":"","sources":["../../../src/events/updatedEntity.event.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.findEntityId = exports.emptyEvent = exports.buildEventPayload = void 0;
|
|
4
|
+
const buildEventPayload = (data, map) => {
|
|
5
|
+
const payload = {};
|
|
6
|
+
for (const [key, value] of Object.entries(map)) {
|
|
7
|
+
payload[key] = data[value];
|
|
8
|
+
}
|
|
9
|
+
return payload;
|
|
10
|
+
};
|
|
11
|
+
exports.buildEventPayload = buildEventPayload;
|
|
12
|
+
const emptyEvent = () => ({
|
|
13
|
+
id: crypto.randomUUID(),
|
|
14
|
+
date: new Date(),
|
|
15
|
+
});
|
|
16
|
+
exports.emptyEvent = emptyEvent;
|
|
17
|
+
const findEntityId = (entityIdColumnName, filters) => {
|
|
18
|
+
if (Array.isArray(filters)) {
|
|
19
|
+
for (const filter of filters) {
|
|
20
|
+
const result = (0, exports.findEntityId)(entityIdColumnName, filter);
|
|
21
|
+
if (result)
|
|
22
|
+
return result;
|
|
23
|
+
}
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
if ('column' in filters) {
|
|
27
|
+
return filters.column === entityIdColumnName ? filters.column : null;
|
|
28
|
+
}
|
|
29
|
+
if ('AND' in filters && filters.AND) {
|
|
30
|
+
for (const subFilter of filters.AND) {
|
|
31
|
+
const result = (0, exports.findEntityId)(entityIdColumnName, subFilter);
|
|
32
|
+
if (result)
|
|
33
|
+
return result;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
if ('OR' in filters && filters.OR) {
|
|
37
|
+
for (const subFilter of filters.OR) {
|
|
38
|
+
const result = (0, exports.findEntityId)(entityIdColumnName, subFilter);
|
|
39
|
+
if (result)
|
|
40
|
+
return result;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return null;
|
|
44
|
+
};
|
|
45
|
+
exports.findEntityId = findEntityId;
|
|
46
|
+
//# sourceMappingURL=eventHelper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eventHelper.js","sourceRoot":"","sources":["../../../src/helpers/eventHelper.ts"],"names":[],"mappings":";;;AAEO,MAAM,iBAAiB,GAAG,CAC7B,IAA6B,EAC7B,GAA2B,EAC7B,EAAE;IACA,MAAM,OAAO,GAA4B,EAAE,CAAC;IAC5C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,OAAO,CAAC;AACnB,CAAC,CAAC;AATW,QAAA,iBAAiB,qBAS5B;AAEK,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,CAAC;IAC7B,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE;IACvB,IAAI,EAAE,IAAI,IAAI,EAAE;CACnB,CAAC,CAAC;AAHU,QAAA,UAAU,cAGpB;AAII,MAAM,YAAY,GAAG,CACxB,kBAA0B,EAC1B,OAAoB,EACP,EAAE;IACf,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,IAAA,oBAAY,EAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;YACxD,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAC;QAC9B,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,QAAQ,IAAI,OAAO,EAAE,CAAC;QACtB,OAAO,OAAO,CAAC,MAAM,KAAK,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IACzE,CAAC;IAED,IAAI,KAAK,IAAI,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAClC,KAAK,MAAM,SAAS,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,IAAA,oBAAY,EAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;YAC3D,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAC;QAC9B,CAAC;IACL,CAAC;IAED,IAAI,IAAI,IAAI,OAAO,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;QAChC,KAAK,MAAM,SAAS,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,IAAA,oBAAY,EAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;YAC3D,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAC;QAC9B,CAAC;IACL,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AA/BW,QAAA,YAAY,gBA+BvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entityDefinition.interface.js","sourceRoot":"","sources":["../../../src/interfaces/entityDefinition.interface.ts"],"names":[],"mappings":""}
|
|
@@ -29,4 +29,5 @@ __exportStar(require("./updateOptions.interface"), exports);
|
|
|
29
29
|
__exportStar(require("./createMultipleResponse.interface"), exports);
|
|
30
30
|
__exportStar(require("./removeOptions.interface"), exports);
|
|
31
31
|
__exportStar(require("./updateExpressions.interface"), exports);
|
|
32
|
+
__exportStar(require("./entityDefinition.interface"), exports);
|
|
32
33
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/interfaces/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8DAA4C;AAC5C,0DAAwC;AACxC,qDAAmC;AACnC,0DAAwC;AACxC,6DAA2C;AAC3C,2DAAyC;AACzC,yDAAuC;AACvC,wDAAsC;AACtC,sDAAoC;AACpC,wDAAsC;AACtC,2DAAyC;AACzC,4DAA0C;AAC1C,qEAAmD;AACnD,4DAA0C;AAC1C,gEAA8C"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/interfaces/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8DAA4C;AAC5C,0DAAwC;AACxC,qDAAmC;AACnC,0DAAwC;AACxC,6DAA2C;AAC3C,2DAAyC;AACzC,yDAAuC;AACvC,wDAAsC;AACtC,sDAAoC;AACpC,wDAAsC;AACtC,2DAAyC;AACzC,4DAA0C;AAC1C,qEAAmD;AACnD,4DAA0C;AAC1C,gEAA8C;AAC9C,+DAA6C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crudSchema.js","sourceRoot":"","sources":["../../../src/schemas/crudSchema.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"crudSchema.js","sourceRoot":"","sources":["../../../src/schemas/crudSchema.ts"],"names":[],"mappings":";;;AAEA,MAAa,UAAU;;AAAvB,gCAQC;AALU,kBAAO,GAAa,KAAK,CAAC;AAC1B,iBAAM,GAAkB,IAAI,CAAC;AAE7B,0BAAe,GAAY,KAAK,CAAC"}
|
|
@@ -12,7 +12,9 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
12
12
|
};
|
|
13
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
14
|
const crudHelpers_1 = require("../helpers/crudHelpers");
|
|
15
|
+
const eventHelper_1 = require("../helpers/eventHelper");
|
|
15
16
|
const crudFactory_service_1 = require("./crudFactory.service");
|
|
17
|
+
const eventEmitter_service_1 = require("./eventEmitter.service");
|
|
16
18
|
class CrudService {
|
|
17
19
|
constructor(crudSchema, pool) {
|
|
18
20
|
this.pool = pool;
|
|
@@ -42,7 +44,9 @@ class CrudService {
|
|
|
42
44
|
const processedData = Array.isArray(data)
|
|
43
45
|
? data.map(this.setDefaultValues.bind(this))
|
|
44
46
|
: this.setDefaultValues(data);
|
|
45
|
-
return this.getCrudServiceInstance()
|
|
47
|
+
return this.getCrudServiceInstance()
|
|
48
|
+
.then((crudService) => crudService.create(processedData))
|
|
49
|
+
.then((createdRecord) => this.afterCreateHook(createdRecord));
|
|
46
50
|
}
|
|
47
51
|
find(options) {
|
|
48
52
|
return this.getCrudServiceInstance().then((crudService) => crudService.find(options));
|
|
@@ -51,13 +55,17 @@ class CrudService {
|
|
|
51
55
|
return this.getCrudServiceInstance().then((crudService) => crudService.findItem(options));
|
|
52
56
|
}
|
|
53
57
|
update(filters, data, options = {}) {
|
|
54
|
-
return this.getCrudServiceInstance()
|
|
58
|
+
return this.getCrudServiceInstance()
|
|
59
|
+
.then((crudService) => crudService.update(filters, data, options))
|
|
60
|
+
.then((updatedRecord) => this.afterUpdateHook(updatedRecord));
|
|
55
61
|
}
|
|
56
62
|
upsert(keyColumnNames, data) {
|
|
57
63
|
return this.getCrudServiceInstance().then((crudService) => crudService.upsert(keyColumnNames, data));
|
|
58
64
|
}
|
|
59
65
|
remove(filters, options = {}) {
|
|
60
|
-
return this.getCrudServiceInstance()
|
|
66
|
+
return this.getCrudServiceInstance()
|
|
67
|
+
.then((crudService) => crudService.remove(filters, options))
|
|
68
|
+
.then(() => this.afterRemoveHook(filters));
|
|
61
69
|
}
|
|
62
70
|
findAll(options) {
|
|
63
71
|
// eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars
|
|
@@ -82,6 +90,46 @@ class CrudService {
|
|
|
82
90
|
runRawQuery(query, params) {
|
|
83
91
|
return this.getCrudServiceInstance().then((crudService) => crudService.runRawQuery(query, params));
|
|
84
92
|
}
|
|
93
|
+
//#region Private methods
|
|
94
|
+
async afterCreateHook(data) {
|
|
95
|
+
// Implement any logic that should run after creating an item or items.
|
|
96
|
+
// This could include logging, emitting events, or other side effects.
|
|
97
|
+
const eventsToEmit = [];
|
|
98
|
+
for (const item of Array.isArray(data) ? data : [data]) {
|
|
99
|
+
if (this.crudSchema.entityDefinition) {
|
|
100
|
+
const builtPayload = (0, eventHelper_1.buildEventPayload)(item, this.crudSchema.entityDefinition.payload);
|
|
101
|
+
const eventData = Object.assign(Object.assign({}, (0, eventHelper_1.emptyEvent)()), { data: Object.assign(Object.assign({}, this.crudSchema.entityDefinition), { payload: builtPayload }) });
|
|
102
|
+
eventsToEmit.push(eventData);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
await Promise.all(eventsToEmit.map(async (event) => {
|
|
106
|
+
await eventEmitter_service_1.EventEmitterService.emit(event);
|
|
107
|
+
}));
|
|
108
|
+
return data;
|
|
109
|
+
}
|
|
110
|
+
async afterUpdateHook(data) {
|
|
111
|
+
// Implement any logic that should run after updating an item.
|
|
112
|
+
// This could include logging, emitting events, or other side effects.
|
|
113
|
+
if (this.crudSchema.entityDefinition) {
|
|
114
|
+
const builtPayload = (0, eventHelper_1.buildEventPayload)(data, this.crudSchema.entityDefinition.payload);
|
|
115
|
+
const eventData = Object.assign(Object.assign({}, (0, eventHelper_1.emptyEvent)()), { data: Object.assign(Object.assign({}, this.crudSchema.entityDefinition), { payload: builtPayload }) });
|
|
116
|
+
await eventEmitter_service_1.EventEmitterService.emit(eventData);
|
|
117
|
+
}
|
|
118
|
+
return data;
|
|
119
|
+
}
|
|
120
|
+
async afterRemoveHook(filters) {
|
|
121
|
+
// Implement any logic that should run after removing items.
|
|
122
|
+
// This could include logging, emitting events, or other side effects.
|
|
123
|
+
if (this.crudSchema.entityDefinition) {
|
|
124
|
+
const entityId = (0, eventHelper_1.findEntityId)(this.crudSchema.entityDefinition.idColumn, filters);
|
|
125
|
+
if (entityId) {
|
|
126
|
+
const eventData = Object.assign(Object.assign({}, (0, eventHelper_1.emptyEvent)()), { data: Object.assign(Object.assign({}, this.crudSchema.entityDefinition), { payload: {
|
|
127
|
+
entity_id: entityId,
|
|
128
|
+
} }) });
|
|
129
|
+
await eventEmitter_service_1.EventEmitterService.emit(eventData);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
85
133
|
}
|
|
86
134
|
exports.default = CrudService;
|
|
87
135
|
//# sourceMappingURL=crud.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crud.service.js","sourceRoot":"","sources":["../../../src/services/crud.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAEA,wDAIgC;AAYhC,+DAAoD;
|
|
1
|
+
{"version":3,"file":"crud.service.js","sourceRoot":"","sources":["../../../src/services/crud.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EventEmitterService = void 0;
|
|
4
|
+
const event_broker_1 = require("@qrvey/event-broker");
|
|
5
|
+
const constants_1 = require("../utils/constants");
|
|
6
|
+
class EventEmitterService {
|
|
7
|
+
static async emit(event) {
|
|
8
|
+
const queueService = new event_broker_1.QueueService();
|
|
9
|
+
let connected = false;
|
|
10
|
+
let response;
|
|
11
|
+
try {
|
|
12
|
+
await queueService.connect();
|
|
13
|
+
connected = true;
|
|
14
|
+
response = await queueService.sendMessage({ name: constants_1.EVENT_BROKER_QUEUE, alias: constants_1.EVENT_BROKER_QUEUE }, event, {});
|
|
15
|
+
}
|
|
16
|
+
catch (error) {
|
|
17
|
+
console.error(`Qrvey > QueueBuilder > sendMessage > ${JSON.stringify(error)}`);
|
|
18
|
+
}
|
|
19
|
+
finally {
|
|
20
|
+
if (connected)
|
|
21
|
+
await queueService.disconnect();
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
exports.EventEmitterService = EventEmitterService;
|
|
26
|
+
//# sourceMappingURL=eventEmitter.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eventEmitter.service.js","sourceRoot":"","sources":["../../../src/services/eventEmitter.service.ts"],"names":[],"mappings":";;;AACA,sDAAmD;AACnD,kDAAwD;AAExD,MAAa,mBAAmB;IACrB,MAAM,CAAC,KAAK,CAAC,IAAI,CAA2B,KAAa;QAC5D,MAAM,YAAY,GAAG,IAAI,2BAAY,EAAE,CAAC;QACxC,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,QAAQ,CAAC;QACb,IAAI,CAAC;YACD,MAAM,YAAY,CAAC,OAAO,EAAE,CAAC;YAC7B,SAAS,GAAG,IAAI,CAAC;YACjB,QAAQ,GAAG,MAAM,YAAY,CAAC,WAAW,CACrC,EAAE,IAAI,EAAE,8BAAkB,EAAE,KAAK,EAAE,8BAAkB,EAAE,EACvD,KAAK,EACL,EAAE,CACL,CAAC;QACN,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CACT,wCAAwC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAClE,CAAC;QACN,CAAC;gBAAS,CAAC;YACP,IAAI,SAAS;gBAAE,MAAM,YAAY,CAAC,UAAU,EAAE,CAAC;QACnD,CAAC;IACL,CAAC;CACJ;AArBD,kDAqBC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DYNAMO_DB_UPDATE_ACTIONS = exports.AGGREGATE_FUNCTIONS = exports.DEFAULT_PG_SCHEMA = exports.POSTGRES_FILTER_OPERATOR_MAP = exports.FilterOperator = exports.FILTER_LOGIC_OPERATORS = exports.CONNECTION_CLOSING_MODES = exports.SORT_DIRECTIONS = exports.DYNAMODB_OPERATORS = exports.FILTER_OPERATOR_MAP = void 0;
|
|
3
|
+
exports.EVENT_BROKER_QUEUE = exports.DYNAMO_DB_UPDATE_ACTIONS = exports.AGGREGATE_FUNCTIONS = exports.DEFAULT_PG_SCHEMA = exports.POSTGRES_FILTER_OPERATOR_MAP = exports.FilterOperator = exports.FILTER_LOGIC_OPERATORS = exports.CONNECTION_CLOSING_MODES = exports.SORT_DIRECTIONS = exports.DYNAMODB_OPERATORS = exports.FILTER_OPERATOR_MAP = void 0;
|
|
4
4
|
exports.isMultiPlatformMode = isMultiPlatformMode;
|
|
5
5
|
exports.getConnectionAlias = getConnectionAlias;
|
|
6
6
|
exports.FILTER_OPERATOR_MAP = {
|
|
@@ -95,4 +95,5 @@ function isMultiPlatformMode() {
|
|
|
95
95
|
function getConnectionAlias() {
|
|
96
96
|
return process.env.PG_CONNECTION_ALIAS || process.env.HOSTNAME || process.env.SERVICE_NAME || 'qrvey-service';
|
|
97
97
|
}
|
|
98
|
+
exports.EVENT_BROKER_QUEUE = 'qrvey.common.entity_management';
|
|
98
99
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/utils/constants.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/utils/constants.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/index.d.mts
CHANGED
|
@@ -129,6 +129,24 @@ interface ITableColumns {
|
|
|
129
129
|
};
|
|
130
130
|
}
|
|
131
131
|
|
|
132
|
+
interface IEntityDependency {
|
|
133
|
+
type: string;
|
|
134
|
+
property: string;
|
|
135
|
+
}
|
|
136
|
+
interface IEntityDefinition {
|
|
137
|
+
idColumn: string;
|
|
138
|
+
type: string;
|
|
139
|
+
dependencies: IEntityDependency[];
|
|
140
|
+
payload: {
|
|
141
|
+
entity_id: string;
|
|
142
|
+
name: string;
|
|
143
|
+
app_id: string;
|
|
144
|
+
org_id: string;
|
|
145
|
+
owner_id: string;
|
|
146
|
+
metadata?: string;
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
|
|
132
150
|
declare class CrudSchema {
|
|
133
151
|
static table: string | ITableName;
|
|
134
152
|
static columns: ITableColumns;
|
|
@@ -136,6 +154,7 @@ declare class CrudSchema {
|
|
|
136
154
|
static schema: string | null;
|
|
137
155
|
static poolClient?: PoolClient;
|
|
138
156
|
static isTemporalTable: boolean;
|
|
157
|
+
static entityDefinition?: IEntityDefinition;
|
|
139
158
|
}
|
|
140
159
|
|
|
141
160
|
declare class CrudService<T> {
|
|
@@ -166,6 +185,9 @@ declare class CrudService<T> {
|
|
|
166
185
|
buildSort(column: string, direction: string): ISorting;
|
|
167
186
|
updateExpression(filters: IFilter[] | ICompositeFilter, actions: IUpdateExpressions, options?: IUpdateExpressionsOptions): Promise<T | null>;
|
|
168
187
|
runRawQuery(query: string, params: any[]): Promise<any>;
|
|
188
|
+
private afterCreateHook;
|
|
189
|
+
private afterUpdateHook;
|
|
190
|
+
private afterRemoveHook;
|
|
169
191
|
}
|
|
170
192
|
|
|
171
193
|
declare function buildFilter(attribute: string, value: any, operator?: string, relativePath?: undefined): {
|
package/dist/esm/index.mjs
CHANGED
|
@@ -3,6 +3,7 @@ import { DynamoDBDocumentClient, GetCommand, QueryCommand, ScanCommand, PutComma
|
|
|
3
3
|
import { literal, ident, format } from '@scaleleap/pg-format';
|
|
4
4
|
import { Pool, Client } from 'pg';
|
|
5
5
|
export { Pool } from 'pg';
|
|
6
|
+
import { QueueService } from '@qrvey/event-broker';
|
|
6
7
|
|
|
7
8
|
var __defProp = Object.defineProperty;
|
|
8
9
|
var __defProps = Object.defineProperties;
|
|
@@ -134,6 +135,7 @@ function getConnectionAlias() {
|
|
|
134
135
|
return process.env.PG_CONNECTION_ALIAS || process.env.HOSTNAME || process.env.SERVICE_NAME || "qrvey-service";
|
|
135
136
|
}
|
|
136
137
|
__name(getConnectionAlias, "getConnectionAlias");
|
|
138
|
+
var EVENT_BROKER_QUEUE = "qrvey.common.entity_management";
|
|
137
139
|
|
|
138
140
|
// src/helpers/crudHelpers.ts
|
|
139
141
|
function buildFilter(attribute, value, operator = "EQUAL", relativePath = void 0) {
|
|
@@ -159,6 +161,44 @@ function buildSort(column, direction = SORT_DIRECTIONS.ASC) {
|
|
|
159
161
|
};
|
|
160
162
|
}
|
|
161
163
|
__name(buildSort, "buildSort");
|
|
164
|
+
|
|
165
|
+
// src/helpers/eventHelper.ts
|
|
166
|
+
var buildEventPayload = /* @__PURE__ */ __name((data, map) => {
|
|
167
|
+
const payload = {};
|
|
168
|
+
for (const [key, value] of Object.entries(map)) {
|
|
169
|
+
payload[key] = data[value];
|
|
170
|
+
}
|
|
171
|
+
return payload;
|
|
172
|
+
}, "buildEventPayload");
|
|
173
|
+
var emptyEvent = /* @__PURE__ */ __name(() => ({
|
|
174
|
+
id: crypto.randomUUID(),
|
|
175
|
+
date: /* @__PURE__ */ new Date()
|
|
176
|
+
}), "emptyEvent");
|
|
177
|
+
var findEntityId = /* @__PURE__ */ __name((entityIdColumnName, filters) => {
|
|
178
|
+
if (Array.isArray(filters)) {
|
|
179
|
+
for (const filter of filters) {
|
|
180
|
+
const result = findEntityId(entityIdColumnName, filter);
|
|
181
|
+
if (result) return result;
|
|
182
|
+
}
|
|
183
|
+
return null;
|
|
184
|
+
}
|
|
185
|
+
if ("column" in filters) {
|
|
186
|
+
return filters.column === entityIdColumnName ? filters.column : null;
|
|
187
|
+
}
|
|
188
|
+
if ("AND" in filters && filters.AND) {
|
|
189
|
+
for (const subFilter of filters.AND) {
|
|
190
|
+
const result = findEntityId(entityIdColumnName, subFilter);
|
|
191
|
+
if (result) return result;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
if ("OR" in filters && filters.OR) {
|
|
195
|
+
for (const subFilter of filters.OR) {
|
|
196
|
+
const result = findEntityId(entityIdColumnName, subFilter);
|
|
197
|
+
if (result) return result;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
return null;
|
|
201
|
+
}, "findEntityId");
|
|
162
202
|
var AWS_REGION = process.env.AWS_DEFAULT_REGION;
|
|
163
203
|
var _DynamoDbClientService = class _DynamoDbClientService {
|
|
164
204
|
constructor(tableName) {
|
|
@@ -1940,6 +1980,27 @@ var _CrudFactory = class _CrudFactory {
|
|
|
1940
1980
|
};
|
|
1941
1981
|
__name(_CrudFactory, "CrudFactory");
|
|
1942
1982
|
var CrudFactory = _CrudFactory;
|
|
1983
|
+
var _EventEmitterService = class _EventEmitterService {
|
|
1984
|
+
static async emit(event) {
|
|
1985
|
+
const queueService = new QueueService();
|
|
1986
|
+
let connected = false;
|
|
1987
|
+
let response;
|
|
1988
|
+
try {
|
|
1989
|
+
await queueService.connect();
|
|
1990
|
+
connected = true;
|
|
1991
|
+
response = await queueService.sendMessage({
|
|
1992
|
+
name: EVENT_BROKER_QUEUE,
|
|
1993
|
+
alias: EVENT_BROKER_QUEUE
|
|
1994
|
+
}, event, {});
|
|
1995
|
+
} catch (error) {
|
|
1996
|
+
console.error(`Qrvey > QueueBuilder > sendMessage > ${JSON.stringify(error)}`);
|
|
1997
|
+
} finally {
|
|
1998
|
+
if (connected) await queueService.disconnect();
|
|
1999
|
+
}
|
|
2000
|
+
}
|
|
2001
|
+
};
|
|
2002
|
+
__name(_EventEmitterService, "EventEmitterService");
|
|
2003
|
+
var EventEmitterService = _EventEmitterService;
|
|
1943
2004
|
|
|
1944
2005
|
// src/services/crud.service.ts
|
|
1945
2006
|
var _a;
|
|
@@ -1972,7 +2033,7 @@ var CrudService = (_a = class {
|
|
|
1972
2033
|
}
|
|
1973
2034
|
create(data) {
|
|
1974
2035
|
const processedData = Array.isArray(data) ? data.map(this.setDefaultValues.bind(this)) : this.setDefaultValues(data);
|
|
1975
|
-
return this.getCrudServiceInstance().then((crudService) => crudService.create(processedData));
|
|
2036
|
+
return this.getCrudServiceInstance().then((crudService) => crudService.create(processedData)).then((createdRecord) => this.afterCreateHook(createdRecord));
|
|
1976
2037
|
}
|
|
1977
2038
|
find(options) {
|
|
1978
2039
|
return this.getCrudServiceInstance().then((crudService) => crudService.find(options));
|
|
@@ -1981,13 +2042,13 @@ var CrudService = (_a = class {
|
|
|
1981
2042
|
return this.getCrudServiceInstance().then((crudService) => crudService.findItem(options));
|
|
1982
2043
|
}
|
|
1983
2044
|
update(filters, data, options = {}) {
|
|
1984
|
-
return this.getCrudServiceInstance().then((crudService) => crudService.update(filters, data, options));
|
|
2045
|
+
return this.getCrudServiceInstance().then((crudService) => crudService.update(filters, data, options)).then((updatedRecord) => this.afterUpdateHook(updatedRecord));
|
|
1985
2046
|
}
|
|
1986
2047
|
upsert(keyColumnNames, data) {
|
|
1987
2048
|
return this.getCrudServiceInstance().then((crudService) => crudService.upsert(keyColumnNames, data));
|
|
1988
2049
|
}
|
|
1989
2050
|
remove(filters, options = {}) {
|
|
1990
|
-
return this.getCrudServiceInstance().then((crudService) => crudService.remove(filters, options));
|
|
2051
|
+
return this.getCrudServiceInstance().then((crudService) => crudService.remove(filters, options)).then(() => this.afterRemoveHook(filters));
|
|
1991
2052
|
}
|
|
1992
2053
|
findAll(options) {
|
|
1993
2054
|
const _a2 = options, { pagination } = _a2, findAllOptions = __objRest(_a2, ["pagination"]);
|
|
@@ -2011,6 +2072,54 @@ var CrudService = (_a = class {
|
|
|
2011
2072
|
runRawQuery(query, params) {
|
|
2012
2073
|
return this.getCrudServiceInstance().then((crudService) => crudService.runRawQuery(query, params));
|
|
2013
2074
|
}
|
|
2075
|
+
//#region Private methods
|
|
2076
|
+
async afterCreateHook(data) {
|
|
2077
|
+
const eventsToEmit = [];
|
|
2078
|
+
for (const item of Array.isArray(data) ? data : [
|
|
2079
|
+
data
|
|
2080
|
+
]) {
|
|
2081
|
+
if (this.crudSchema.entityDefinition) {
|
|
2082
|
+
const builtPayload = buildEventPayload(item, this.crudSchema.entityDefinition.payload);
|
|
2083
|
+
const eventData = __spreadProps(__spreadValues({}, emptyEvent()), {
|
|
2084
|
+
data: __spreadProps(__spreadValues({}, this.crudSchema.entityDefinition), {
|
|
2085
|
+
payload: builtPayload
|
|
2086
|
+
})
|
|
2087
|
+
});
|
|
2088
|
+
eventsToEmit.push(eventData);
|
|
2089
|
+
}
|
|
2090
|
+
}
|
|
2091
|
+
await Promise.all(eventsToEmit.map(async (event) => {
|
|
2092
|
+
await EventEmitterService.emit(event);
|
|
2093
|
+
}));
|
|
2094
|
+
return data;
|
|
2095
|
+
}
|
|
2096
|
+
async afterUpdateHook(data) {
|
|
2097
|
+
if (this.crudSchema.entityDefinition) {
|
|
2098
|
+
const builtPayload = buildEventPayload(data, this.crudSchema.entityDefinition.payload);
|
|
2099
|
+
const eventData = __spreadProps(__spreadValues({}, emptyEvent()), {
|
|
2100
|
+
data: __spreadProps(__spreadValues({}, this.crudSchema.entityDefinition), {
|
|
2101
|
+
payload: builtPayload
|
|
2102
|
+
})
|
|
2103
|
+
});
|
|
2104
|
+
await EventEmitterService.emit(eventData);
|
|
2105
|
+
}
|
|
2106
|
+
return data;
|
|
2107
|
+
}
|
|
2108
|
+
async afterRemoveHook(filters) {
|
|
2109
|
+
if (this.crudSchema.entityDefinition) {
|
|
2110
|
+
const entityId = findEntityId(this.crudSchema.entityDefinition.idColumn, filters);
|
|
2111
|
+
if (entityId) {
|
|
2112
|
+
const eventData = __spreadProps(__spreadValues({}, emptyEvent()), {
|
|
2113
|
+
data: __spreadProps(__spreadValues({}, this.crudSchema.entityDefinition), {
|
|
2114
|
+
payload: {
|
|
2115
|
+
entity_id: entityId
|
|
2116
|
+
}
|
|
2117
|
+
})
|
|
2118
|
+
});
|
|
2119
|
+
await EventEmitterService.emit(eventData);
|
|
2120
|
+
}
|
|
2121
|
+
}
|
|
2122
|
+
}
|
|
2014
2123
|
}, __name(_a, "CrudService"), _a);
|
|
2015
2124
|
var crud_service_default = CrudService;
|
|
2016
2125
|
|
|
@@ -2024,6 +2133,7 @@ __publicField(_CrudSchema, "usePool", false);
|
|
|
2024
2133
|
__publicField(_CrudSchema, "schema", null);
|
|
2025
2134
|
__publicField(_CrudSchema, "poolClient");
|
|
2026
2135
|
__publicField(_CrudSchema, "isTemporalTable", false);
|
|
2136
|
+
__publicField(_CrudSchema, "entityDefinition");
|
|
2027
2137
|
var CrudSchema = _CrudSchema;
|
|
2028
2138
|
var DEFAULT_DB_POOL_CONFIG = {
|
|
2029
2139
|
max: 20,
|