@volontariapp/database 1.8.0-snap-8a230de → 1.8.0-snap-effd3b6

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.
@@ -8,6 +8,7 @@ export declare class OutboxConsumer<TOutboxModel extends OutboxModel, TOutboxEnt
8
8
  protected readonly batchSize: number;
9
9
  constructor(logger: Logger, repository: BaseRepository<TOutboxModel, TOutboxEntity, string>, batchSize: number);
10
10
  fetchPendingItems(): Promise<TOutboxEntity[]>;
11
+ private normalizeRows;
11
12
  processItems(): void;
12
13
  markItemsAsDispatched(): void;
13
14
  }
@@ -1 +1 @@
1
- {"version":3,"file":"outbox.consumer.d.ts","sourceRoot":"","sources":["../../../src/outbox/consumers/outbox.consumer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAEjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEnD,qBAAa,cAAc,CAAC,YAAY,SAAS,WAAW,EAAE,aAAa,SAAS,YAAY;IAE5F,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC,YAAY,EAAE,aAAa,EAAE,MAAM,CAAC;IAClF,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM;gBAFnB,MAAM,EAAE,MAAM,EACZ,UAAU,EAAE,cAAc,CAAC,YAAY,EAAE,aAAa,EAAE,MAAM,CAAC,EAC/D,SAAS,EAAE,MAAM;IAOhC,iBAAiB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IA6CnD,YAAY,IAAI,IAAI;IAIpB,qBAAqB,IAAI,IAAI;CAG9B"}
1
+ {"version":3,"file":"outbox.consumer.d.ts","sourceRoot":"","sources":["../../../src/outbox/consumers/outbox.consumer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAEjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEnD,qBAAa,cAAc,CAAC,YAAY,SAAS,WAAW,EAAE,aAAa,SAAS,YAAY;IAE5F,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC,YAAY,EAAE,aAAa,EAAE,MAAM,CAAC;IAClF,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM;gBAFnB,MAAM,EAAE,MAAM,EACZ,UAAU,EAAE,cAAc,CAAC,YAAY,EAAE,aAAa,EAAE,MAAM,CAAC,EAC/D,SAAS,EAAE,MAAM;IAOhC,iBAAiB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IA2CnD,OAAO,CAAC,aAAa;IA2BrB,YAAY,IAAI,IAAI;IAIpB,qBAAqB,IAAI,IAAI;CAG9B"}
@@ -16,24 +16,24 @@ export class OutboxConsumer {
16
16
  const tableName = this.repository.metadata.tableName;
17
17
  this.logger.debug('Fetching pending outbox items', { tableName, batchSize: this.batchSize });
18
18
  return this.repository.executeInTransaction(async (queryRunner) => {
19
- const result = (await queryRunner.query(`
20
- UPDATE "${tableName}"
21
- SET
22
- "status" = $1,
23
- "updated_at" = NOW()
24
- WHERE "id" IN (
19
+ const updateResult = await queryRunner.manager
20
+ .createQueryBuilder(this.repository.metadata.target, 'outbox')
21
+ .update()
22
+ .set({
23
+ status: OutboxStatus.PROCESSING,
24
+ updatedAt: () => 'NOW()',
25
+ })
26
+ .where(`id IN (
25
27
  SELECT "id"
26
28
  FROM "${tableName}"
27
- WHERE "status" = $2
29
+ WHERE "status" = :pending
28
30
  ORDER BY "created_at" ASC
29
- LIMIT $3
31
+ LIMIT :limit
30
32
  FOR UPDATE SKIP LOCKED
31
- )
32
- RETURNING *, "created_at" AS "createdAt", "updated_at" AS "updatedAt";
33
- `, [OutboxStatus.PROCESSING, OutboxStatus.PENDING, this.batchSize]));
34
- const rawRows = Array.isArray(result) && Array.isArray(result[0])
35
- ? result[0]
36
- : result;
33
+ )`, { pending: OutboxStatus.PENDING, limit: this.batchSize })
34
+ .returning('*')
35
+ .execute();
36
+ const rawRows = this.normalizeRows(updateResult.raw);
37
37
  if (rawRows.length === 0) {
38
38
  this.logger.debug('No pending outbox items found', { tableName });
39
39
  return [];
@@ -45,6 +45,27 @@ export class OutboxConsumer {
45
45
  return this.repository.toEntities(rawRows);
46
46
  });
47
47
  }
48
+ normalizeRows(result) {
49
+ this.logger.debug('Normalizing query result', { isArray: Array.isArray(result) });
50
+ const data = result !== null && typeof result === 'object' && 'rows' in result
51
+ ? result.rows
52
+ : result;
53
+ if (!Array.isArray(data)) {
54
+ this.logger.warn('Query result data is not an array after normalization', {
55
+ type: typeof data,
56
+ });
57
+ return [];
58
+ }
59
+ this.logger.debug(`Mapping ${data.length.toString()} raw rows to models`);
60
+ return data.map((item) => {
61
+ const row = item;
62
+ return {
63
+ ...row,
64
+ createdAt: (row.createdAt ?? row.created_at),
65
+ updatedAt: (row.updatedAt ?? row.updated_at),
66
+ };
67
+ });
68
+ }
48
69
  processItems() {
49
70
  this.logger.debug('Processing outbox items');
50
71
  }
@@ -1 +1 @@
1
- {"version":3,"file":"outbox.consumer.js","sourceRoot":"","sources":["../../../src/outbox/consumers/outbox.consumer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAG9D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAIzD,MAAM,OAAO,cAAc;IAEN;IACE;IACA;IAHrB,YACmB,MAAc,EACZ,UAA+D,EAC/D,SAAiB;QAFnB,WAAM,GAAN,MAAM,CAAQ;QACZ,eAAU,GAAV,UAAU,CAAqD;QAC/D,cAAS,GAAT,SAAS,CAAQ;QAEpC,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,sBAAsB,EAAE,CAAC;QACrC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,iBAAiB;QACrB,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC;QAErD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QAE7F,OAAO,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE;YAChE,MAAM,MAAM,GAAG,CAAC,MAAM,WAAW,CAAC,KAAK,CACrC;oBACY,SAAS;;;;;;oBAMT,SAAS;;;;;;;SAOpB,EACD,CAAC,YAAY,CAAC,UAAU,EAAE,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAChE,CAAY,CAAC;YAGd,MAAM,OAAO,GACX,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC/C,CAAC,CAAE,MAAM,CAAC,CAAC,CAAoB;gBAC/B,CAAC,CAAE,MAAyB,CAAC;YAEjC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;gBAClE,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,uBAAuB,EAAE;gBAC5E,SAAS;gBACT,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;aAClC,CAAC,CAAC;YAEH,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACL,CAAC;IAED,YAAY;QACV,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IAED,qBAAqB;QACnB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;IAC1D,CAAC;CACF"}
1
+ {"version":3,"file":"outbox.consumer.js","sourceRoot":"","sources":["../../../src/outbox/consumers/outbox.consumer.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import { OutboxModel } from '../../outbox/models/outbox.model.js';
4
4
  import { InvalidOutboxSizeError } from '@volontariapp/errors';
5
5
  import { OutboxStatus } from '../../outbox/types/outbox.status.js';
6
6
  import { makeLoggerMock } from '../utils/helpers/logger-mock.helper.js';
7
+ import { makeQueryRunnerMock } from '../utils/helpers/query-runner-mock.helper.js';
7
8
  describe('OutboxConsumer (Unit)', () => {
8
9
  let consumer;
9
10
  let repositoryMock;
@@ -11,16 +12,19 @@ describe('OutboxConsumer (Unit)', () => {
11
12
  let loggerMock;
12
13
  beforeEach(() => {
13
14
  loggerMock = makeLoggerMock();
14
- queryRunnerMock = {
15
- query: jest.fn().mockResolvedValue([]),
16
- };
15
+ const mocks = makeQueryRunnerMock();
16
+ queryRunnerMock = mocks.queryRunnerMock;
17
17
  repositoryMock = {
18
18
  metadata: {
19
19
  target: OutboxModel,
20
20
  tableName: 'outbox',
21
21
  },
22
- executeInTransaction: jest.fn((work) => work(queryRunnerMock)),
23
- toEntities: jest.fn((models) => models),
22
+ executeInTransaction(work) {
23
+ return work(queryRunnerMock);
24
+ },
25
+ toEntities(models) {
26
+ return models;
27
+ },
24
28
  };
25
29
  consumer = new OutboxConsumer(loggerMock, repositoryMock, 10);
26
30
  });
@@ -32,9 +36,13 @@ describe('OutboxConsumer (Unit)', () => {
32
36
  });
33
37
  describe('fetchPendingItems', () => {
34
38
  it('should return empty array if no items found', async () => {
35
- queryRunnerMock.query.mockResolvedValueOnce([]);
39
+ const qb = queryRunnerMock.manager.createQueryBuilder();
40
+ const executeSpy = jest
41
+ .spyOn(qb, 'execute')
42
+ .mockResolvedValueOnce({ raw: [], generatedMaps: [], affected: 0 });
36
43
  const result = await consumer.fetchPendingItems();
37
44
  expect(result).toEqual([]);
45
+ expect(executeSpy).toHaveBeenCalled();
38
46
  });
39
47
  it('should fetch, mark as processing, and return items', async () => {
40
48
  const rawRows = [
@@ -57,14 +65,20 @@ describe('OutboxConsumer (Unit)', () => {
57
65
  updated_at: new Date(),
58
66
  },
59
67
  ];
60
- queryRunnerMock.query.mockResolvedValueOnce(rawRows);
68
+ const qb = queryRunnerMock.manager.createQueryBuilder();
69
+ const executeSpy = jest
70
+ .spyOn(qb, 'execute')
71
+ .mockResolvedValueOnce({ raw: rawRows, generatedMaps: [], affected: rawRows.length });
72
+ const updateSpy = jest.spyOn(qb, 'update');
73
+ const setSpy = jest.spyOn(qb, 'set');
74
+ const createQBSpy = jest.spyOn(queryRunnerMock.manager, 'createQueryBuilder');
61
75
  const result = await consumer.fetchPendingItems();
62
- expect(repositoryMock.executeInTransaction).toHaveBeenCalled();
63
- expect(queryRunnerMock.query).toHaveBeenCalledWith(expect.stringContaining('UPDATE'), [
64
- OutboxStatus.PROCESSING,
65
- OutboxStatus.PENDING,
66
- 10,
67
- ]);
76
+ expect(createQBSpy).toHaveBeenCalled();
77
+ expect(updateSpy).toHaveBeenCalled();
78
+ expect(setSpy).toHaveBeenCalledWith(expect.objectContaining({
79
+ status: OutboxStatus.PROCESSING,
80
+ }));
81
+ expect(executeSpy).toHaveBeenCalled();
68
82
  expect(result).toHaveLength(2);
69
83
  });
70
84
  });
@@ -1 +1 @@
1
- {"version":3,"file":"outbox.consumer.unit.spec.js","sourceRoot":"","sources":["../../../src/test/outbox/outbox.consumer.unit.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"outbox.consumer.unit.spec.js","sourceRoot":"","sources":["../../../src/test/outbox/outbox.consumer.unit.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { QueryRunner } from 'typeorm';
2
+ export declare const makeQueryRunnerMock: () => {
3
+ queryRunnerMock: import("jest-mock").MockedObject<QueryRunner>;
4
+ queryBuilderMock: {
5
+ update(): any;
6
+ set(): any;
7
+ where(): any;
8
+ returning(): any;
9
+ execute(): Promise<{
10
+ raw: never[];
11
+ generatedMaps: never[];
12
+ affected: number;
13
+ }>;
14
+ };
15
+ };
16
+ //# sourceMappingURL=query-runner-mock.helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-runner-mock.helper.d.ts","sourceRoot":"","sources":["../../../../src/test/utils/helpers/query-runner-mock.helper.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;CA4B/B,CAAC"}
@@ -0,0 +1,28 @@
1
+ export const makeQueryRunnerMock = () => {
2
+ const queryBuilderMock = {
3
+ update() {
4
+ return this;
5
+ },
6
+ set() {
7
+ return this;
8
+ },
9
+ where() {
10
+ return this;
11
+ },
12
+ returning() {
13
+ return this;
14
+ },
15
+ execute() {
16
+ return Promise.resolve({ raw: [], generatedMaps: [], affected: 0 });
17
+ },
18
+ };
19
+ const queryRunnerMock = {
20
+ manager: {
21
+ createQueryBuilder() {
22
+ return queryBuilderMock;
23
+ },
24
+ },
25
+ };
26
+ return { queryRunnerMock, queryBuilderMock };
27
+ };
28
+ //# sourceMappingURL=query-runner-mock.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-runner-mock.helper.js","sourceRoot":"","sources":["../../../../src/test/utils/helpers/query-runner-mock.helper.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,EAAE;IACtC,MAAM,gBAAgB,GAAG;QACvB,MAAM;YACJ,OAAO,IAAI,CAAC;QACd,CAAC;QACD,GAAG;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,KAAK;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QACD,SAAS;YACP,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO;YACL,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;QACtE,CAAC;KACF,CAAC;IAEF,MAAM,eAAe,GAAG;QACtB,OAAO,EAAE;YACP,kBAAkB;gBAChB,OAAO,gBAAgB,CAAC;YAC1B,CAAC;SACF;KACqC,CAAC;IAEzC,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,CAAC;AAC/C,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@volontariapp/database",
3
- "version": "1.8.0-snap-8a230de",
3
+ "version": "1.8.0-snap-effd3b6",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "provenance": true
@@ -36,8 +36,8 @@
36
36
  "db:down": "docker-compose -f ../../docker-compose.test.yml down"
37
37
  },
38
38
  "dependencies": {
39
- "@volontariapp/bridge": "0.2.9-snap-8a230de",
40
- "@volontariapp/errors": "0.5.0-snap-8a230de",
39
+ "@volontariapp/bridge": "0.2.9-snap-effd3b6",
40
+ "@volontariapp/errors": "0.5.0-snap-effd3b6",
41
41
  "@volontariapp/logger": "0.2.3",
42
42
  "class-transformer": "^0.5.1",
43
43
  "class-validator": "^0.14.1",