@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.
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=base.event.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.event.js","sourceRoot":"","sources":["../../../src/events/base.event.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=createdEntity.event.js.map
@@ -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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=removeEntity.event.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"removeEntity.event.js","sourceRoot":"","sources":["../../../src/events/removeEntity.event.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=updatedEntity.event.js.map
@@ -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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=entityDefinition.interface.js.map
@@ -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":";;;AAGA,MAAa,UAAU;;AAAvB,gCAOC;AAJU,kBAAO,GAAa,KAAK,CAAC;AAC1B,iBAAM,GAAkB,IAAI,CAAC;AAE7B,0BAAe,GAAY,KAAK,CAAC"}
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().then((crudService) => crudService.create(processedData));
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().then((crudService) => crudService.update(filters, data, options));
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().then((crudService) => crudService.remove(filters, options));
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;AAEpD,MAAM,WAAW;IAGb,YACI,UAA6B,EACrB,IAAW;QAAX,SAAI,GAAJ,IAAI,CAAO;QAEnB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;IAEO,KAAK,CAAC,sBAAsB;QAChC,MAAM,WAAW,GAAG,MAAM,iCAAW,CAAC,qBAAqB,CACvD,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,IAAI,CACZ,CAAC;QACF,OAAO,WAAW,CAAC;IACvB,CAAC;IAEO,eAAe,CAAC,UAAkB;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACnD,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/C,CAAC;IAEO,gBAAgB,CAAC,IAAS;QAC9B,MAAM,aAAa,GAA2B,EAAE,CAAC;QACjD,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAExC,KAAK,MAAM,UAAU,IAAI,OAAO,EAAE,CAAC;YAC/B,MAAM,kBAAkB,GAAG,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC;YACjD,MAAM,kBAAkB,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YAC5D,IAAI,kBAAkB,IAAI,kBAAkB,EAAE,CAAC;gBAC3C,aAAa,CAAC,UAAU,CAAC,GAAG,kBAAkB,CAAC;YACnD,CAAC;QACL,CAAC;QAED,uCAAY,aAAa,GAAK,IAAI,EAAG;IACzC,CAAC;IAED,MAAM,CAAC,IAAa;QAChB,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YACrC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5C,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAElC,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CACtD,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,CACpC,CAAC;IACN,CAAC;IAED,IAAI,CAAC,OAAqB;QACtB,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CACtD,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAC5B,CAAC;IACN,CAAC;IAED,QAAQ,CAAC,OAAqB;QAC1B,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CACtD,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAChC,CAAC;IACN,CAAC;IAED,MAAM,CACF,OAAqC,EACrC,IAAgB,EAChB,UAA0B,EAAE;QAE5B,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CACtD,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAC7C,CAAC;IACN,CAAC;IAED,MAAM,CACF,cAAwB,EACxB,IAAO;QAEP,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CACtD,WAAW,CAAC,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,CAC3C,CAAC;IACN,CAAC;IAED,MAAM,CACF,OAAmD,EACnD,UAA0B,EAAE;QAE5B,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CACtD,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CACvC,CAAC;IACN,CAAC;IAED,OAAO,CAAC,OAAqB;QACzB,6EAA6E;QAC7E,MAAM,EAAE,UAAU,KAAwB,OAAO,EAA1B,cAAc,UAAK,OAAO,EAA3C,cAAiC,CAAU,CAAC;QAClD,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CACtD,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC,CACtC,CAAC;IACN,CAAC;IAED,SAAS,CAAC,gBAA8B;QACpC,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CACtD,WAAW,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAC1C,CAAC;IACN,CAAC;IAED,WAAW,CACP,SAAiB,EACjB,KAAU,EACV,QAAQ,GAAG,OAAO,EAClB,YAAY,GAAG,SAAS;QAExB,OAAO,IAAA,yBAAW,EAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;IACjE,CAAC;IAED,eAAe,CAAC,SAAiB,EAAE,OAAiB;QAChD,OAAO,IAAA,6BAAe,EAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED,SAAS,CAAC,MAAc,EAAE,SAAiB;QACvC,OAAO,IAAA,uBAAS,EAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACxC,CAAC;IAED,gBAAgB,CACZ,OAAqC,EACrC,OAA2B,EAC3B,OAAmC;QAEnC,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CACtD,WAAW,CAAC,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAC3D,CAAC;IACN,CAAC;IAED,WAAW,CAAC,KAAa,EAAE,MAAa;QACpC,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CACtD,WAAW,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CACzC,CAAC;IACN,CAAC;CACJ;AAED,kBAAe,WAAW,CAAC"}
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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"}
@@ -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): {
@@ -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,