@volontariapp/domain-post 3.0.0-snap-dc80f35 → 3.0.0-snap-250f53c

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.
Files changed (46) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/test/migrations/common/1776786226145-JobsOutboxAndEventQueue.d.ts +7 -0
  3. package/dist/test/migrations/common/1776786226145-JobsOutboxAndEventQueue.d.ts.map +1 -0
  4. package/dist/test/migrations/common/1776786226145-JobsOutboxAndEventQueue.js +12 -0
  5. package/dist/test/migrations/common/1776786226145-JobsOutboxAndEventQueue.js.map +1 -0
  6. package/dist/test/migrations/common/1776974876099-JobsOutboxAndEventQueueWithTraceId.d.ts +7 -0
  7. package/dist/test/migrations/common/1776974876099-JobsOutboxAndEventQueueWithTraceId.d.ts.map +1 -0
  8. package/dist/test/migrations/common/1776974876099-JobsOutboxAndEventQueueWithTraceId.js +12 -0
  9. package/dist/test/migrations/common/1776974876099-JobsOutboxAndEventQueueWithTraceId.js.map +1 -0
  10. package/dist/test/migrations/common/1777630647718-UpdateOutboxModels.d.ts +7 -0
  11. package/dist/test/migrations/common/1777630647718-UpdateOutboxModels.d.ts.map +1 -0
  12. package/dist/test/migrations/common/1777630647718-UpdateOutboxModels.js +12 -0
  13. package/dist/test/migrations/common/1777630647718-UpdateOutboxModels.js.map +1 -0
  14. package/dist/test/migrations/common/1777985367963-AddTargetServicesToEventQueue.d.ts +6 -0
  15. package/dist/test/migrations/common/1777985367963-AddTargetServicesToEventQueue.d.ts.map +1 -0
  16. package/dist/test/migrations/common/1777985367963-AddTargetServicesToEventQueue.js +76 -0
  17. package/dist/test/migrations/common/1777985367963-AddTargetServicesToEventQueue.js.map +1 -0
  18. package/dist/test/migrations/common/1779114963391-AddJobAudit.d.ts +7 -0
  19. package/dist/test/migrations/common/1779114963391-AddJobAudit.d.ts.map +1 -0
  20. package/dist/test/migrations/common/1779114963391-AddJobAudit.js +18 -0
  21. package/dist/test/migrations/common/1779114963391-AddJobAudit.js.map +1 -0
  22. package/dist/test/migrations/common/1779115100001-AddJobAuditStatusTrigger.d.ts +7 -0
  23. package/dist/test/migrations/common/1779115100001-AddJobAuditStatusTrigger.d.ts.map +1 -0
  24. package/dist/test/migrations/common/1779115100001-AddJobAuditStatusTrigger.js +45 -0
  25. package/dist/test/migrations/common/1779115100001-AddJobAuditStatusTrigger.js.map +1 -0
  26. package/dist/test/migrations/common/1779353596425-AddEmitterToJobAudit.d.ts +7 -0
  27. package/dist/test/migrations/common/1779353596425-AddEmitterToJobAudit.d.ts.map +1 -0
  28. package/dist/test/migrations/common/1779353596425-AddEmitterToJobAudit.js +18 -0
  29. package/dist/test/migrations/common/1779353596425-AddEmitterToJobAudit.js.map +1 -0
  30. package/dist/test/migrations/common/1779360000000-FixEventQueueStatusDefault.d.ts +7 -0
  31. package/dist/test/migrations/common/1779360000000-FixEventQueueStatusDefault.d.ts.map +1 -0
  32. package/dist/test/migrations/common/1779360000000-FixEventQueueStatusDefault.js +12 -0
  33. package/dist/test/migrations/common/1779360000000-FixEventQueueStatusDefault.js.map +1 -0
  34. package/dist/test/migrations/common/1779542033290-AddEmitterIdToOutbox.d.ts +6 -0
  35. package/dist/test/migrations/common/1779542033290-AddEmitterIdToOutbox.d.ts.map +1 -0
  36. package/dist/test/migrations/common/1779542033290-AddEmitterIdToOutbox.js +13 -0
  37. package/dist/test/migrations/common/1779542033290-AddEmitterIdToOutbox.js.map +1 -0
  38. package/dist/test/migrations/common/1779700000000-UpdateEventQueueTriggerTargetService.d.ts +6 -0
  39. package/dist/test/migrations/common/1779700000000-UpdateEventQueueTriggerTargetService.d.ts.map +1 -0
  40. package/dist/test/migrations/common/1779700000000-UpdateEventQueueTriggerTargetService.js +151 -0
  41. package/dist/test/migrations/common/1779700000000-UpdateEventQueueTriggerTargetService.js.map +1 -0
  42. package/dist/test/migrations/common/1779800000000-UpdateJobAuditStatusTrigger.d.ts +7 -0
  43. package/dist/test/migrations/common/1779800000000-UpdateJobAuditStatusTrigger.d.ts.map +1 -0
  44. package/dist/test/migrations/common/1779800000000-UpdateJobAuditStatusTrigger.js +72 -0
  45. package/dist/test/migrations/common/1779800000000-UpdateJobAuditStatusTrigger.js.map +1 -0
  46. package/package.json +9 -9
package/CHANGELOG.md CHANGED
@@ -6,6 +6,27 @@
6
6
 
7
7
  - Finished domain-post package
8
8
 
9
+ ## 2.3.0
10
+
11
+ ### Minor Changes
12
+
13
+ - mimgrations added -> new flow
14
+
15
+ ## 2.2.5
16
+
17
+ ### Patch Changes
18
+
19
+ - bump migration
20
+
21
+ ## 2.2.4
22
+
23
+ ### Patch Changes
24
+
25
+ - license package
26
+
27
+ - Updated dependencies []:
28
+ - @volontariapp/logger@0.2.5
29
+
9
30
  ## 2.2.3
10
31
 
11
32
  ### Patch Changes
@@ -0,0 +1,7 @@
1
+ import type { MigrationInterface, QueryRunner } from 'typeorm';
2
+ export declare class JobsOutboxAndEventQueue1776786226145 implements MigrationInterface {
3
+ name: string;
4
+ up(queryRunner: QueryRunner): Promise<void>;
5
+ down(queryRunner: QueryRunner): Promise<void>;
6
+ }
7
+ //# sourceMappingURL=1776786226145-JobsOutboxAndEventQueue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1776786226145-JobsOutboxAndEventQueue.d.ts","sourceRoot":"","sources":["../../../../src/test/migrations/common/1776786226145-JobsOutboxAndEventQueue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE/D,qBAAa,oCAAqC,YAAW,kBAAkB;IAC7E,IAAI,SAA0C;IAEjC,EAAE,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAS3C,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAI3D"}
@@ -0,0 +1,12 @@
1
+ export class JobsOutboxAndEventQueue1776786226145 {
2
+ name = 'JobsOutboxAndEventQueue1776786226145';
3
+ async up(queryRunner) {
4
+ await queryRunner.query(`CREATE TABLE "event_queue" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "status" character varying(20) NOT NULL DEFAULT 'PENDING', "attempts" integer NOT NULL DEFAULT '0', "lastError" text, "type" character varying(100) NOT NULL, "emitter" character varying(100) NOT NULL, "updated_at" TIMESTAMP NOT NULL, "created_at" TIMESTAMP NOT NULL DEFAULT now(), "version" integer NOT NULL, "payload" jsonb NOT NULL, "processed_at" TIMESTAMP, CONSTRAINT "PK_f2ab43ee6a569a89ba286db2fa6" PRIMARY KEY ("id"))`);
5
+ await queryRunner.query(`CREATE TABLE "jobs_outbox" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "status" character varying(20) NOT NULL DEFAULT 'PENDING', "attempts" integer NOT NULL DEFAULT '0', "lastError" text, "type" character varying(100) NOT NULL, "emitter" character varying(100) NOT NULL, "updated_at" TIMESTAMP NOT NULL, "created_at" TIMESTAMP NOT NULL DEFAULT now(), "target" character varying(100) NOT NULL, "payload" jsonb NOT NULL, "scheduled_at" TIMESTAMP NOT NULL, CONSTRAINT "PK_7172b6dd5767f423ecb44d9fb57" PRIMARY KEY ("id"))`);
6
+ }
7
+ async down(queryRunner) {
8
+ await queryRunner.query(`DROP TABLE "jobs_outbox"`);
9
+ await queryRunner.query(`DROP TABLE "event_queue"`);
10
+ }
11
+ }
12
+ //# sourceMappingURL=1776786226145-JobsOutboxAndEventQueue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1776786226145-JobsOutboxAndEventQueue.js","sourceRoot":"","sources":["../../../../src/test/migrations/common/1776786226145-JobsOutboxAndEventQueue.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,oCAAoC;IAC/C,IAAI,GAAG,sCAAsC,CAAC;IAEvC,KAAK,CAAC,EAAE,CAAC,WAAwB;QACtC,MAAM,WAAW,CAAC,KAAK,CACrB,qfAAqf,CACtf,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,4gBAA4gB,CAC7gB,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,WAAwB;QACxC,MAAM,WAAW,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QACpD,MAAM,WAAW,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;IACtD,CAAC;CACF"}
@@ -0,0 +1,7 @@
1
+ import type { MigrationInterface, QueryRunner } from 'typeorm';
2
+ export declare class JobsOutboxAndEventQueueWithTraceId1776974876099 implements MigrationInterface {
3
+ name: string;
4
+ up(queryRunner: QueryRunner): Promise<void>;
5
+ down(queryRunner: QueryRunner): Promise<void>;
6
+ }
7
+ //# sourceMappingURL=1776974876099-JobsOutboxAndEventQueueWithTraceId.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1776974876099-JobsOutboxAndEventQueueWithTraceId.d.ts","sourceRoot":"","sources":["../../../../src/test/migrations/common/1776974876099-JobsOutboxAndEventQueueWithTraceId.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE/D,qBAAa,+CAAgD,YAAW,kBAAkB;IACxF,IAAI,SAAqD;IAE5C,EAAE,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3C,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAI3D"}
@@ -0,0 +1,12 @@
1
+ export class JobsOutboxAndEventQueueWithTraceId1776974876099 {
2
+ name = 'JobsOutboxAndEventQueueWithTraceId1776974876099';
3
+ async up(queryRunner) {
4
+ await queryRunner.query(`ALTER TABLE "event_queue" ADD "traceId" uuid`);
5
+ await queryRunner.query(`ALTER TABLE "jobs_outbox" ADD "traceId" uuid`);
6
+ }
7
+ async down(queryRunner) {
8
+ await queryRunner.query(`ALTER TABLE "jobs_outbox" DROP COLUMN "traceId"`);
9
+ await queryRunner.query(`ALTER TABLE "event_queue" DROP COLUMN "traceId"`);
10
+ }
11
+ }
12
+ //# sourceMappingURL=1776974876099-JobsOutboxAndEventQueueWithTraceId.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1776974876099-JobsOutboxAndEventQueueWithTraceId.js","sourceRoot":"","sources":["../../../../src/test/migrations/common/1776974876099-JobsOutboxAndEventQueueWithTraceId.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,+CAA+C;IAC1D,IAAI,GAAG,iDAAiD,CAAC;IAElD,KAAK,CAAC,EAAE,CAAC,WAAwB;QACtC,MAAM,WAAW,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;QACxE,MAAM,WAAW,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAC1E,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,WAAwB;QACxC,MAAM,WAAW,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;QAC3E,MAAM,WAAW,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;IAC7E,CAAC;CACF"}
@@ -0,0 +1,7 @@
1
+ import type { MigrationInterface, QueryRunner } from 'typeorm';
2
+ export declare class UpdateOutboxModels1777630647718 implements MigrationInterface {
3
+ name: string;
4
+ up(queryRunner: QueryRunner): Promise<void>;
5
+ down(queryRunner: QueryRunner): Promise<void>;
6
+ }
7
+ //# sourceMappingURL=1777630647718-UpdateOutboxModels.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1777630647718-UpdateOutboxModels.d.ts","sourceRoot":"","sources":["../../../../src/test/migrations/common/1777630647718-UpdateOutboxModels.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE/D,qBAAa,+BAAgC,YAAW,kBAAkB;IACxE,IAAI,SAAqC;IAE5B,EAAE,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3C,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAI3D"}
@@ -0,0 +1,12 @@
1
+ export class UpdateOutboxModels1777630647718 {
2
+ name = 'UpdateOutboxModels1777630647718';
3
+ async up(queryRunner) {
4
+ await queryRunner.query(`ALTER TABLE "event_queue" ALTER COLUMN "updated_at" DROP NOT NULL`);
5
+ await queryRunner.query(`ALTER TABLE "jobs_outbox" ALTER COLUMN "updated_at" DROP NOT NULL`);
6
+ }
7
+ async down(queryRunner) {
8
+ await queryRunner.query(`ALTER TABLE "jobs_outbox" ALTER COLUMN "updated_at" SET NOT NULL`);
9
+ await queryRunner.query(`ALTER TABLE "event_queue" ALTER COLUMN "updated_at" SET NOT NULL`);
10
+ }
11
+ }
12
+ //# sourceMappingURL=1777630647718-UpdateOutboxModels.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1777630647718-UpdateOutboxModels.js","sourceRoot":"","sources":["../../../../src/test/migrations/common/1777630647718-UpdateOutboxModels.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,+BAA+B;IAC1C,IAAI,GAAG,iCAAiC,CAAC;IAElC,KAAK,CAAC,EAAE,CAAC,WAAwB;QACtC,MAAM,WAAW,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAC;QAC7F,MAAM,WAAW,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAC;IAC/F,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,WAAwB;QACxC,MAAM,WAAW,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAC;QAC5F,MAAM,WAAW,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAC;IAC9F,CAAC;CACF"}
@@ -0,0 +1,6 @@
1
+ import type { MigrationInterface, QueryRunner } from 'typeorm';
2
+ export declare class AddTargetServicesToEventQueue1777985367963 implements MigrationInterface {
3
+ up(queryRunner: QueryRunner): Promise<void>;
4
+ down(queryRunner: QueryRunner): Promise<void>;
5
+ }
6
+ //# sourceMappingURL=1777985367963-AddTargetServicesToEventQueue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1777985367963-AddTargetServicesToEventQueue.d.ts","sourceRoot":"","sources":["../../../../src/test/migrations/common/1777985367963-AddTargetServicesToEventQueue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE/D,qBAAa,0CAA2C,YAAW,kBAAkB;IACtE,EAAE,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IA8D3C,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAoB3D"}
@@ -0,0 +1,76 @@
1
+ export class AddTargetServicesToEventQueue1777985367963 {
2
+ async up(queryRunner) {
3
+ const table = await queryRunner.getTable('event_queue');
4
+ const hasTargetServices = table?.findColumnByName('target_services');
5
+ if (!hasTargetServices) {
6
+ await queryRunner.query(`ALTER TABLE "event_queue" ADD "target_services" varchar array NOT NULL DEFAULT '{}'`);
7
+ }
8
+ await queryRunner.query(`
9
+ CREATE OR REPLACE FUNCTION create_event_queue_record()
10
+ RETURNS TRIGGER AS $$
11
+ DECLARE
12
+ payload_data JSONB;
13
+ v_emitter_id UUID;
14
+ v_event_id UUID;
15
+ BEGIN
16
+ IF (TG_OP = 'DELETE') THEN
17
+ payload_data := jsonb_build_object('before', to_jsonb(OLD), 'after', NULL);
18
+ ELSIF (TG_OP = 'INSERT') THEN
19
+ payload_data := jsonb_build_object('before', NULL, 'after', to_jsonb(NEW));
20
+ ELSIF (TG_OP = 'UPDATE') THEN
21
+ payload_data := jsonb_build_object('before', to_jsonb(OLD), 'after', to_jsonb(NEW));
22
+ END IF;
23
+
24
+ v_emitter_id := COALESCE(
25
+ (payload_data->'after'->>'updatedBy')::UUID,
26
+ (payload_data->'after'->>'organizerId')::UUID,
27
+ (payload_data->'after'->>'createdBy')::UUID,
28
+ (payload_data->'before'->>'updatedBy')::UUID,
29
+ (payload_data->'before'->>'organizerId')::UUID,
30
+ (payload_data->'before'->>'createdBy')::UUID
31
+ );
32
+
33
+ IF v_emitter_id IS NULL THEN
34
+ v_event_id := COALESCE(
35
+ (payload_data->'after'->>'eventsId')::UUID,
36
+ (payload_data->'before'->>'eventsId')::UUID
37
+ );
38
+ IF v_event_id IS NOT NULL THEN
39
+ SELECT "organizerId" INTO v_emitter_id FROM events WHERE id = v_event_id;
40
+ END IF;
41
+ END IF;
42
+
43
+ IF v_emitter_id IS NULL THEN
44
+ v_emitter_id := uuid_generate_v4();
45
+ END IF;
46
+
47
+ INSERT INTO event_queue (type, emitter, "emitterId", payload, version, updated_at, target_services)
48
+ VALUES (TG_ARGV[0], TG_ARGV[1], v_emitter_id, payload_data, 1, now(), ARRAY['social:interaction']);
49
+
50
+ IF (TG_OP = 'DELETE') THEN
51
+ RETURN OLD;
52
+ END IF;
53
+ RETURN NEW;
54
+ END;
55
+ $$ LANGUAGE plpgsql;
56
+ `);
57
+ }
58
+ async down(queryRunner) {
59
+ await queryRunner.query(`
60
+ CREATE OR REPLACE FUNCTION create_event_queue_record()
61
+ RETURNS TRIGGER AS $$
62
+ BEGIN
63
+ INSERT INTO event_queue (type, emitter, payload, version, updated_at)
64
+ VALUES (TG_ARGV[0], TG_ARGV[1], to_jsonb(NEW), 1, now());
65
+ RETURN NEW;
66
+ END;
67
+ $$ LANGUAGE plpgsql;
68
+ `);
69
+ const table = await queryRunner.getTable('event_queue');
70
+ const hasTargetServices = table?.findColumnByName('target_services');
71
+ if (hasTargetServices) {
72
+ await queryRunner.query(`ALTER TABLE "event_queue" DROP COLUMN "target_services"`);
73
+ }
74
+ }
75
+ }
76
+ //# sourceMappingURL=1777985367963-AddTargetServicesToEventQueue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1777985367963-AddTargetServicesToEventQueue.js","sourceRoot":"","sources":["../../../../src/test/migrations/common/1777985367963-AddTargetServicesToEventQueue.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,0CAA0C;IAC9C,KAAK,CAAC,EAAE,CAAC,WAAwB;QAEtC,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACxD,MAAM,iBAAiB,GAAG,KAAK,EAAE,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;QAErE,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,MAAM,WAAW,CAAC,KAAK,CACrB,qFAAqF,CACtF,CAAC;QACJ,CAAC;QAED,MAAM,WAAW,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAgDvB,CAAC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,WAAwB;QAExC,MAAM,WAAW,CAAC,KAAK,CAAC;;;;;;;;;KASvB,CAAC,CAAC;QAGH,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACxD,MAAM,iBAAiB,GAAG,KAAK,EAAE,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;QACrE,IAAI,iBAAiB,EAAE,CAAC;YACtB,MAAM,WAAW,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,7 @@
1
+ import type { MigrationInterface, QueryRunner } from 'typeorm';
2
+ export declare class AddJobAudit1779114963391 implements MigrationInterface {
3
+ name: string;
4
+ up(queryRunner: QueryRunner): Promise<void>;
5
+ down(queryRunner: QueryRunner): Promise<void>;
6
+ }
7
+ //# sourceMappingURL=1779114963391-AddJobAudit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1779114963391-AddJobAudit.d.ts","sourceRoot":"","sources":["../../../../src/test/migrations/common/1779114963391-AddJobAudit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE/D,qBAAa,wBAAyB,YAAW,kBAAkB;IACjE,IAAI,SAA8B;IAErB,EAAE,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB3C,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAO3D"}
@@ -0,0 +1,18 @@
1
+ export class AddJobAudit1779114963391 {
2
+ name = 'AddJobAudit1779114963391';
3
+ async up(queryRunner) {
4
+ await queryRunner.query(`CREATE TABLE "job_audit" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "updated_at" TIMESTAMP, "created_at" TIMESTAMP NOT NULL DEFAULT now(), "job_id" character varying(100) NOT NULL, "job_type" character varying(255) NOT NULL, "status" character varying(20) NOT NULL DEFAULT 'PENDING', "worker_id" character varying(255) NOT NULL, "current_attempt" integer NOT NULL DEFAULT '1', "started_at" TIMESTAMP, "finished_at" TIMESTAMP, "result_payload" jsonb, "error_message" text, "error_stack" text, CONSTRAINT "UQ_97856738d27cf25a03a19858f9f" UNIQUE ("job_id"), CONSTRAINT "PK_c580f2b133efd041412070efcc5" PRIMARY KEY ("id"))`);
5
+ await queryRunner.query(`CREATE INDEX "IDX_6dc48bc8128876ec2584ca468f" ON "job_audit" ("status") `);
6
+ await queryRunner.query(`CREATE INDEX "IDX_c0816b9c349e6faef069e518d5" ON "job_audit" ("worker_id") `);
7
+ await queryRunner.query(`CREATE INDEX "IDX_fde22585be17fba51745a56ea1" ON "job_audit" ("job_type") `);
8
+ await queryRunner.query(`CREATE UNIQUE INDEX "IDX_97856738d27cf25a03a19858f9" ON "job_audit" ("job_id") `);
9
+ }
10
+ async down(queryRunner) {
11
+ await queryRunner.query(`DROP INDEX "public"."IDX_97856738d27cf25a03a19858f9"`);
12
+ await queryRunner.query(`DROP INDEX "public"."IDX_fde22585be17fba51745a56ea1"`);
13
+ await queryRunner.query(`DROP INDEX "public"."IDX_c0816b9c349e6faef069e518d5"`);
14
+ await queryRunner.query(`DROP INDEX "public"."IDX_6dc48bc8128876ec2584ca468f"`);
15
+ await queryRunner.query(`DROP TABLE "job_audit"`);
16
+ }
17
+ }
18
+ //# sourceMappingURL=1779114963391-AddJobAudit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1779114963391-AddJobAudit.js","sourceRoot":"","sources":["../../../../src/test/migrations/common/1779114963391-AddJobAudit.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,wBAAwB;IACnC,IAAI,GAAG,0BAA0B,CAAC;IAE3B,KAAK,CAAC,EAAE,CAAC,WAAwB;QACtC,MAAM,WAAW,CAAC,KAAK,CACrB,inBAAinB,CAClnB,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,0EAA0E,CAC3E,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,6EAA6E,CAC9E,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,4EAA4E,CAC7E,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,iFAAiF,CAClF,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,WAAwB;QACxC,MAAM,WAAW,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAChF,MAAM,WAAW,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAChF,MAAM,WAAW,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAChF,MAAM,WAAW,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAChF,MAAM,WAAW,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IACpD,CAAC;CACF"}
@@ -0,0 +1,7 @@
1
+ import type { MigrationInterface, QueryRunner } from 'typeorm';
2
+ export declare class AddJobAuditStatusTrigger1779115100001 implements MigrationInterface {
3
+ name: string;
4
+ up(queryRunner: QueryRunner): Promise<void>;
5
+ down(queryRunner: QueryRunner): Promise<void>;
6
+ }
7
+ //# sourceMappingURL=1779115100001-AddJobAuditStatusTrigger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1779115100001-AddJobAuditStatusTrigger.d.ts","sourceRoot":"","sources":["../../../../src/test/migrations/common/1779115100001-AddJobAuditStatusTrigger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE/D,qBAAa,qCAAsC,YAAW,kBAAkB;IAC9E,IAAI,SAA2C;IAElC,EAAE,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAuC3C,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAI3D"}
@@ -0,0 +1,45 @@
1
+ export class AddJobAuditStatusTrigger1779115100001 {
2
+ name = 'AddJobAuditStatusTrigger1779115100001';
3
+ async up(queryRunner) {
4
+ await queryRunner.query(`
5
+ CREATE OR REPLACE FUNCTION notify_job_audit_status_change()
6
+ RETURNS TRIGGER AS $$
7
+ BEGIN
8
+ IF NEW.status = 'COMPLETED' THEN
9
+ INSERT INTO event_queue (type, emitter, payload, version, updated_at, target_services)
10
+ VALUES (
11
+ 'job.outbox.success',
12
+ NEW.emitter,
13
+ jsonb_build_object('before', to_jsonb(OLD), 'after', to_jsonb(NEW)),
14
+ 1,
15
+ now(),
16
+ ARRAY[NEW.emitter]
17
+ );
18
+ ELSIF NEW.status = 'FAILED' THEN
19
+ INSERT INTO event_queue (type, emitter, payload, version, updated_at, target_services)
20
+ VALUES (
21
+ 'job.outbox.failed',
22
+ NEW.emitter,
23
+ jsonb_build_object('before', to_jsonb(OLD), 'after', to_jsonb(NEW)),
24
+ 1,
25
+ now(),
26
+ ARRAY[NEW.emitter]
27
+ );
28
+ END IF;
29
+ RETURN NEW;
30
+ END;
31
+ $$ LANGUAGE plpgsql;
32
+ `);
33
+ await queryRunner.query(`
34
+ CREATE TRIGGER job_audit_status_trigger
35
+ AFTER UPDATE OF status ON job_audit
36
+ FOR EACH ROW
37
+ EXECUTE FUNCTION notify_job_audit_status_change();
38
+ `);
39
+ }
40
+ async down(queryRunner) {
41
+ await queryRunner.query(`DROP TRIGGER IF EXISTS job_audit_status_trigger ON job_audit;`);
42
+ await queryRunner.query(`DROP FUNCTION IF EXISTS notify_job_audit_status_change() CASCADE;`);
43
+ }
44
+ }
45
+ //# sourceMappingURL=1779115100001-AddJobAuditStatusTrigger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1779115100001-AddJobAuditStatusTrigger.js","sourceRoot":"","sources":["../../../../src/test/migrations/common/1779115100001-AddJobAuditStatusTrigger.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,qCAAqC;IAChD,IAAI,GAAG,uCAAuC,CAAC;IAExC,KAAK,CAAC,EAAE,CAAC,WAAwB;QACtC,MAAM,WAAW,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA4BvB,CAAC,CAAC;QAEH,MAAM,WAAW,CAAC,KAAK,CAAC;;;;;KAKvB,CAAC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,WAAwB;QACxC,MAAM,WAAW,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAC;QACzF,MAAM,WAAW,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAC;IAC/F,CAAC;CACF"}
@@ -0,0 +1,7 @@
1
+ import type { MigrationInterface, QueryRunner } from 'typeorm';
2
+ export declare class AddEmitterToJobAudit1779353596425 implements MigrationInterface {
3
+ name: string;
4
+ up(queryRunner: QueryRunner): Promise<void>;
5
+ down(queryRunner: QueryRunner): Promise<void>;
6
+ }
7
+ //# sourceMappingURL=1779353596425-AddEmitterToJobAudit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1779353596425-AddEmitterToJobAudit.d.ts","sourceRoot":"","sources":["../../../../src/test/migrations/common/1779353596425-AddEmitterToJobAudit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE/D,qBAAa,iCAAkC,YAAW,kBAAkB;IAC1E,IAAI,SAAuC;IAE9B,EAAE,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAa3C,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAU3D"}
@@ -0,0 +1,18 @@
1
+ export class AddEmitterToJobAudit1779353596425 {
2
+ name = 'AddEmitterToJobAudit1779353596425';
3
+ async up(queryRunner) {
4
+ await queryRunner.query(`ALTER TABLE "job_audit" ADD "emitter" character varying(100)`);
5
+ await queryRunner.query(`UPDATE "job_audit" SET "emitter" = 'unknown' WHERE "emitter" IS NULL`);
6
+ await queryRunner.query(`ALTER TABLE "job_audit" ALTER COLUMN "emitter" SET NOT NULL`);
7
+ await queryRunner.query(`DROP INDEX "public"."IDX_c0816b9c349e6faef069e518d5"`);
8
+ await queryRunner.query(`ALTER TABLE "job_audit" ALTER COLUMN "worker_id" TYPE character varying(100)`);
9
+ await queryRunner.query(`CREATE INDEX "IDX_c0816b9c349e6faef069e518d5" ON "job_audit" ("worker_id") `);
10
+ }
11
+ async down(queryRunner) {
12
+ await queryRunner.query(`DROP INDEX "public"."IDX_c0816b9c349e6faef069e518d5"`);
13
+ await queryRunner.query(`ALTER TABLE "job_audit" ALTER COLUMN "worker_id" TYPE character varying(255)`);
14
+ await queryRunner.query(`CREATE INDEX "IDX_c0816b9c349e6faef069e518d5" ON "job_audit" ("worker_id") `);
15
+ await queryRunner.query(`ALTER TABLE "job_audit" DROP COLUMN "emitter"`);
16
+ }
17
+ }
18
+ //# sourceMappingURL=1779353596425-AddEmitterToJobAudit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1779353596425-AddEmitterToJobAudit.js","sourceRoot":"","sources":["../../../../src/test/migrations/common/1779353596425-AddEmitterToJobAudit.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,iCAAiC;IAC5C,IAAI,GAAG,mCAAmC,CAAC;IAEpC,KAAK,CAAC,EAAE,CAAC,WAAwB;QACtC,MAAM,WAAW,CAAC,KAAK,CAAC,8DAA8D,CAAC,CAAC;QACxF,MAAM,WAAW,CAAC,KAAK,CAAC,sEAAsE,CAAC,CAAC;QAChG,MAAM,WAAW,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;QACvF,MAAM,WAAW,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAChF,MAAM,WAAW,CAAC,KAAK,CACrB,8EAA8E,CAC/E,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,6EAA6E,CAC9E,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,WAAwB;QACxC,MAAM,WAAW,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAChF,MAAM,WAAW,CAAC,KAAK,CACrB,8EAA8E,CAC/E,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,6EAA6E,CAC9E,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;IAC3E,CAAC;CACF"}
@@ -0,0 +1,7 @@
1
+ import type { MigrationInterface, QueryRunner } from 'typeorm';
2
+ export declare class FixEventQueueStatusDefault1779360000000 implements MigrationInterface {
3
+ name: string;
4
+ up(queryRunner: QueryRunner): Promise<void>;
5
+ down(queryRunner: QueryRunner): Promise<void>;
6
+ }
7
+ //# sourceMappingURL=1779360000000-FixEventQueueStatusDefault.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1779360000000-FixEventQueueStatusDefault.d.ts","sourceRoot":"","sources":["../../../../src/test/migrations/common/1779360000000-FixEventQueueStatusDefault.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE/D,qBAAa,uCAAwC,YAAW,kBAAkB;IAChF,IAAI,SAA6C;IAEpC,EAAE,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAS3C,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAI3D"}
@@ -0,0 +1,12 @@
1
+ export class FixEventQueueStatusDefault1779360000000 {
2
+ name = 'FixEventQueueStatusDefault1779360000000';
3
+ async up(queryRunner) {
4
+ await queryRunner.query(`ALTER TABLE "event_queue" ALTER COLUMN "status" SET DEFAULT 'PENDING'`);
5
+ await queryRunner.query(`ALTER TABLE "jobs_outbox" ALTER COLUMN "status" SET DEFAULT 'PENDING'`);
6
+ }
7
+ async down(queryRunner) {
8
+ await queryRunner.query(`ALTER TABLE "jobs_outbox" ALTER COLUMN "status" DROP DEFAULT`);
9
+ await queryRunner.query(`ALTER TABLE "event_queue" ALTER COLUMN "status" DROP DEFAULT`);
10
+ }
11
+ }
12
+ //# sourceMappingURL=1779360000000-FixEventQueueStatusDefault.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1779360000000-FixEventQueueStatusDefault.js","sourceRoot":"","sources":["../../../../src/test/migrations/common/1779360000000-FixEventQueueStatusDefault.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,uCAAuC;IAClD,IAAI,GAAG,yCAAyC,CAAC;IAE1C,KAAK,CAAC,EAAE,CAAC,WAAwB;QACtC,MAAM,WAAW,CAAC,KAAK,CACrB,uEAAuE,CACxE,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,uEAAuE,CACxE,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,WAAwB;QACxC,MAAM,WAAW,CAAC,KAAK,CAAC,8DAA8D,CAAC,CAAC;QACxF,MAAM,WAAW,CAAC,KAAK,CAAC,8DAA8D,CAAC,CAAC;IAC1F,CAAC;CACF"}
@@ -0,0 +1,6 @@
1
+ import type { MigrationInterface, QueryRunner } from 'typeorm';
2
+ export declare class AddEmitterIdToOutbox1779542033290 implements MigrationInterface {
3
+ up(queryRunner: QueryRunner): Promise<void>;
4
+ down(queryRunner: QueryRunner): Promise<void>;
5
+ }
6
+ //# sourceMappingURL=1779542033290-AddEmitterIdToOutbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1779542033290-AddEmitterIdToOutbox.d.ts","sourceRoot":"","sources":["../../../../src/test/migrations/common/1779542033290-AddEmitterIdToOutbox.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE/D,qBAAa,iCAAkC,YAAW,kBAAkB;IAC7D,EAAE,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAY3C,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAI3D"}
@@ -0,0 +1,13 @@
1
+ export class AddEmitterIdToOutbox1779542033290 {
2
+ async up(queryRunner) {
3
+ await queryRunner.query(`ALTER TABLE "event_queue" ADD "emitterId" uuid NOT NULL DEFAULT uuid_generate_v4()`);
4
+ await queryRunner.query(`ALTER TABLE "event_queue" ALTER COLUMN "emitterId" DROP DEFAULT`);
5
+ await queryRunner.query(`ALTER TABLE "jobs_outbox" ADD "emitterId" uuid NOT NULL DEFAULT uuid_generate_v4()`);
6
+ await queryRunner.query(`ALTER TABLE "jobs_outbox" ALTER COLUMN "emitterId" DROP DEFAULT`);
7
+ }
8
+ async down(queryRunner) {
9
+ await queryRunner.query(`ALTER TABLE "jobs_outbox" DROP COLUMN "emitterId"`);
10
+ await queryRunner.query(`ALTER TABLE "event_queue" DROP COLUMN "emitterId"`);
11
+ }
12
+ }
13
+ //# sourceMappingURL=1779542033290-AddEmitterIdToOutbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1779542033290-AddEmitterIdToOutbox.js","sourceRoot":"","sources":["../../../../src/test/migrations/common/1779542033290-AddEmitterIdToOutbox.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,iCAAiC;IACrC,KAAK,CAAC,EAAE,CAAC,WAAwB;QACtC,MAAM,WAAW,CAAC,KAAK,CACrB,oFAAoF,CACrF,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CAAC,iEAAiE,CAAC,CAAC;QAE3F,MAAM,WAAW,CAAC,KAAK,CACrB,oFAAoF,CACrF,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CAAC,iEAAiE,CAAC,CAAC;IAC7F,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,WAAwB;QACxC,MAAM,WAAW,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;QAC7E,MAAM,WAAW,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;IAC/E,CAAC;CACF"}
@@ -0,0 +1,6 @@
1
+ import type { MigrationInterface, QueryRunner } from 'typeorm';
2
+ export declare class UpdateEventQueueTriggerTargetService1779700000000 implements MigrationInterface {
3
+ up(queryRunner: QueryRunner): Promise<void>;
4
+ down(queryRunner: QueryRunner): Promise<void>;
5
+ }
6
+ //# sourceMappingURL=1779700000000-UpdateEventQueueTriggerTargetService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1779700000000-UpdateEventQueueTriggerTargetService.d.ts","sourceRoot":"","sources":["../../../../src/test/migrations/common/1779700000000-UpdateEventQueueTriggerTargetService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE/D,qBAAa,iDAAkD,YAAW,kBAAkB;IAC7E,EAAE,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IA2E3C,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CA0E3D"}
@@ -0,0 +1,151 @@
1
+ export class UpdateEventQueueTriggerTargetService1779700000000 {
2
+ async up(queryRunner) {
3
+ await queryRunner.query(`
4
+ CREATE OR REPLACE FUNCTION create_event_queue_record()
5
+ RETURNS TRIGGER AS $$
6
+ DECLARE
7
+ event_type TEXT := TG_ARGV[0];
8
+ emitter_name TEXT := TG_ARGV[1];
9
+ payload_data JSONB;
10
+ v_emitter_id UUID;
11
+ v_event_id UUID;
12
+ BEGIN
13
+ IF (TG_OP = 'DELETE') THEN
14
+ payload_data := jsonb_build_object('before', to_jsonb(OLD), 'after', NULL);
15
+ ELSIF (TG_OP = 'INSERT') THEN
16
+ payload_data := jsonb_build_object('before', NULL, 'after', to_jsonb(NEW));
17
+ ELSIF (TG_OP = 'UPDATE') THEN
18
+ payload_data := jsonb_build_object('before', to_jsonb(OLD), 'after', to_jsonb(NEW));
19
+ END IF;
20
+
21
+ v_emitter_id := COALESCE(
22
+ (payload_data->'after'->>'updatedBy')::UUID,
23
+ (payload_data->'after'->>'organizerId')::UUID,
24
+ (payload_data->'after'->>'createdBy')::UUID,
25
+ (payload_data->'before'->>'updatedBy')::UUID,
26
+ (payload_data->'before'->>'organizerId')::UUID,
27
+ (payload_data->'before'->>'createdBy')::UUID
28
+ );
29
+
30
+ IF v_emitter_id IS NULL THEN
31
+ v_event_id := COALESCE(
32
+ (payload_data->'after'->>'eventsId')::UUID,
33
+ (payload_data->'before'->>'eventsId')::UUID
34
+ );
35
+ IF v_event_id IS NOT NULL THEN
36
+ SELECT "organizerId" INTO v_emitter_id FROM events WHERE id = v_event_id;
37
+ END IF;
38
+ END IF;
39
+
40
+ IF v_emitter_id IS NULL THEN
41
+ v_emitter_id := uuid_generate_v4();
42
+ END IF;
43
+
44
+ INSERT INTO event_queue (
45
+ type,
46
+ emitter,
47
+ "emitterId",
48
+ payload,
49
+ target_services,
50
+ version,
51
+ status,
52
+ attempts,
53
+ updated_at,
54
+ created_at
55
+ ) VALUES (
56
+ event_type,
57
+ emitter_name,
58
+ v_emitter_id,
59
+ payload_data,
60
+ ARRAY['social:interactions'],
61
+ 1,
62
+ 'PENDING',
63
+ 0,
64
+ now(),
65
+ now()
66
+ );
67
+
68
+ IF (TG_OP = 'DELETE') THEN
69
+ RETURN OLD;
70
+ END IF;
71
+ RETURN NEW;
72
+ END;
73
+ $$ LANGUAGE plpgsql;
74
+ `);
75
+ }
76
+ async down(queryRunner) {
77
+ await queryRunner.query(`
78
+ CREATE OR REPLACE FUNCTION create_event_queue_record()
79
+ RETURNS TRIGGER AS $$
80
+ DECLARE
81
+ event_type TEXT := TG_ARGV[0];
82
+ emitter_name TEXT := TG_ARGV[1];
83
+ payload_data JSONB;
84
+ v_emitter_id UUID;
85
+ v_event_id UUID;
86
+ BEGIN
87
+ IF (TG_OP = 'DELETE') THEN
88
+ payload_data := jsonb_build_object('before', to_jsonb(OLD), 'after', NULL);
89
+ ELSIF (TG_OP = 'INSERT') THEN
90
+ payload_data := jsonb_build_object('before', NULL, 'after', to_jsonb(NEW));
91
+ ELSIF (TG_OP = 'UPDATE') THEN
92
+ payload_data := jsonb_build_object('before', to_jsonb(OLD), 'after', to_jsonb(NEW));
93
+ END IF;
94
+
95
+ v_emitter_id := COALESCE(
96
+ (payload_data->'after'->>'updatedBy')::UUID,
97
+ (payload_data->'after'->>'organizerId')::UUID,
98
+ (payload_data->'after'->>'createdBy')::UUID,
99
+ (payload_data->'before'->>'updatedBy')::UUID,
100
+ (payload_data->'before'->>'organizerId')::UUID,
101
+ (payload_data->'before'->>'createdBy')::UUID
102
+ );
103
+
104
+ IF v_emitter_id IS NULL THEN
105
+ v_event_id := COALESCE(
106
+ (payload_data->'after'->>'eventsId')::UUID,
107
+ (payload_data->'before'->>'eventsId')::UUID
108
+ );
109
+ IF v_event_id IS NOT NULL THEN
110
+ SELECT "organizerId" INTO v_emitter_id FROM events WHERE id = v_event_id;
111
+ END IF;
112
+ END IF;
113
+
114
+ IF v_emitter_id IS NULL THEN
115
+ v_emitter_id := uuid_generate_v4();
116
+ END IF;
117
+
118
+ INSERT INTO event_queue (
119
+ type,
120
+ emitter,
121
+ "emitterId",
122
+ payload,
123
+ target_services,
124
+ version,
125
+ status,
126
+ attempts,
127
+ updated_at,
128
+ created_at
129
+ ) VALUES (
130
+ event_type,
131
+ emitter_name,
132
+ v_emitter_id,
133
+ payload_data,
134
+ ARRAY['social:interaction'],
135
+ 1,
136
+ 'PENDING',
137
+ 0,
138
+ now(),
139
+ now()
140
+ );
141
+
142
+ IF (TG_OP = 'DELETE') THEN
143
+ RETURN OLD;
144
+ END IF;
145
+ RETURN NEW;
146
+ END;
147
+ $$ LANGUAGE plpgsql;
148
+ `);
149
+ }
150
+ }
151
+ //# sourceMappingURL=1779700000000-UpdateEventQueueTriggerTargetService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1779700000000-UpdateEventQueueTriggerTargetService.js","sourceRoot":"","sources":["../../../../src/test/migrations/common/1779700000000-UpdateEventQueueTriggerTargetService.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,iDAAiD;IACrD,KAAK,CAAC,EAAE,CAAC,WAAwB;QACtC,MAAM,WAAW,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAuEvB,CAAC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,WAAwB;QACxC,MAAM,WAAW,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAuEvB,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,7 @@
1
+ import type { MigrationInterface, QueryRunner } from 'typeorm';
2
+ export declare class UpdateJobAuditStatusTrigger1779800000000 implements MigrationInterface {
3
+ name: string;
4
+ up(queryRunner: QueryRunner): Promise<void>;
5
+ down(queryRunner: QueryRunner): Promise<void>;
6
+ }
7
+ //# sourceMappingURL=1779800000000-UpdateJobAuditStatusTrigger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1779800000000-UpdateJobAuditStatusTrigger.d.ts","sourceRoot":"","sources":["../../../../src/test/migrations/common/1779800000000-UpdateJobAuditStatusTrigger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE/D,qBAAa,wCAAyC,YAAW,kBAAkB;IACjF,IAAI,SAA8C;IAErC,EAAE,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAsC3C,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CA+B3D"}
@@ -0,0 +1,72 @@
1
+ export class UpdateJobAuditStatusTrigger1779800000000 {
2
+ name = 'UpdateJobAuditStatusTrigger1779800000000';
3
+ async up(queryRunner) {
4
+ await queryRunner.query(`
5
+ CREATE OR REPLACE FUNCTION notify_job_audit_status_change()
6
+ RETURNS TRIGGER AS $$
7
+ DECLARE
8
+ stream_prefix text;
9
+ event_type text;
10
+ BEGIN
11
+ stream_prefix := replace(NEW.emitter, 'ms-', '');
12
+ IF NEW.status = 'COMPLETED' THEN
13
+ event_type := stream_prefix || ':job:outbox:success';
14
+ INSERT INTO event_queue (type, emitter, payload, version, updated_at, target_services)
15
+ VALUES (
16
+ event_type,
17
+ NEW.emitter,
18
+ jsonb_build_object('before', to_jsonb(OLD), 'after', to_jsonb(NEW)),
19
+ 1,
20
+ now(),
21
+ ARRAY[NEW.emitter]
22
+ );
23
+ ELSIF NEW.status = 'FAILED' THEN
24
+ event_type := stream_prefix || ':job:outbox:failure';
25
+ INSERT INTO event_queue (type, emitter, payload, version, updated_at, target_services)
26
+ VALUES (
27
+ event_type,
28
+ NEW.emitter,
29
+ jsonb_build_object('before', to_jsonb(OLD), 'after', to_jsonb(NEW)),
30
+ 1,
31
+ now(),
32
+ ARRAY[NEW.emitter]
33
+ );
34
+ END IF;
35
+ RETURN NEW;
36
+ END;
37
+ $$ LANGUAGE plpgsql;
38
+ `);
39
+ }
40
+ async down(queryRunner) {
41
+ await queryRunner.query(`
42
+ CREATE OR REPLACE FUNCTION notify_job_audit_status_change()
43
+ RETURNS TRIGGER AS $$
44
+ BEGIN
45
+ IF NEW.status = 'COMPLETED' THEN
46
+ INSERT INTO event_queue (type, emitter, payload, version, updated_at, target_services)
47
+ VALUES (
48
+ 'job.outbox.success',
49
+ NEW.emitter,
50
+ jsonb_build_object('before', to_jsonb(OLD), 'after', to_jsonb(NEW)),
51
+ 1,
52
+ now(),
53
+ ARRAY[NEW.emitter]
54
+ );
55
+ ELSIF NEW.status = 'FAILED' THEN
56
+ INSERT INTO event_queue (type, emitter, payload, version, updated_at, target_services)
57
+ VALUES (
58
+ 'job.outbox.failed',
59
+ NEW.emitter,
60
+ jsonb_build_object('before', to_jsonb(OLD), 'after', to_jsonb(NEW)),
61
+ 1,
62
+ now(),
63
+ ARRAY[NEW.emitter]
64
+ );
65
+ END IF;
66
+ RETURN NEW;
67
+ END;
68
+ $$ LANGUAGE plpgsql;
69
+ `);
70
+ }
71
+ }
72
+ //# sourceMappingURL=1779800000000-UpdateJobAuditStatusTrigger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1779800000000-UpdateJobAuditStatusTrigger.js","sourceRoot":"","sources":["../../../../src/test/migrations/common/1779800000000-UpdateJobAuditStatusTrigger.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,wCAAwC;IACnD,IAAI,GAAG,0CAA0C,CAAC;IAE3C,KAAK,CAAC,EAAE,CAAC,WAAwB;QACtC,MAAM,WAAW,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAkCvB,CAAC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,WAAwB;QACxC,MAAM,WAAW,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA4BvB,CAAC,CAAC;IACL,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@volontariapp/domain-post",
3
- "version": "3.0.0-snap-dc80f35",
3
+ "version": "3.0.0-snap-250f53c",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "provenance": true
@@ -10,7 +10,7 @@
10
10
  "url": "git+https://github.com/Volontariapp/npm-packages.git"
11
11
  },
12
12
  "description": "Domain post definitions and contracts for Volontariapp",
13
- "license": "UNLICENSED",
13
+ "license": "MIT",
14
14
  "type": "module",
15
15
  "main": "./dist/index.js",
16
16
  "types": "./dist/index.d.ts",
@@ -43,7 +43,7 @@
43
43
  "@nestjs/typeorm": "^11.0.1",
44
44
  "@types/jest": "^30.0.0",
45
45
  "@types/node": "^22.10.7",
46
- "@volontariapp/testing": "1.0.0",
46
+ "@volontariapp/testing": "1.0.1",
47
47
  "jest": "^30.3.0",
48
48
  "pg": "^8.20.0",
49
49
  "reflect-metadata": "^0.2.2",
@@ -54,12 +54,12 @@
54
54
  },
55
55
  "dependencies": {
56
56
  "@nestjs/common": "^11.0.1",
57
- "@volontariapp/contracts": "4.0.10",
58
- "@volontariapp/database": "1.15.1",
59
- "@volontariapp/errors": "0.5.1",
60
- "@volontariapp/errors-nest": "0.11.1",
61
- "@volontariapp/logger": "0.2.4",
62
- "@volontariapp/messaging": "1.1.1",
57
+ "@volontariapp/contracts": "4.0.14",
58
+ "@volontariapp/database": "3.2.13",
59
+ "@volontariapp/errors": "0.6.0",
60
+ "@volontariapp/errors-nest": "0.12.0",
61
+ "@volontariapp/logger": "0.2.5",
62
+ "@volontariapp/messaging": "2.6.0",
63
63
  "class-transformer": "^0.5.1"
64
64
  }
65
65
  }