@volontariapp/database 1.11.0-snap-f78fc7e → 1.11.0-snap-69d3980
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/outbox/dispatchers/outbox.dispatcher.d.ts.map +1 -1
- package/dist/outbox/dispatchers/outbox.dispatcher.js +4 -0
- package/dist/outbox/dispatchers/outbox.dispatcher.js.map +1 -1
- package/dist/test/outbox/dispatchers/outbox.dispatcher.unit.spec.js +7 -6
- package/dist/test/outbox/dispatchers/outbox.dispatcher.unit.spec.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"outbox.dispatcher.d.ts","sourceRoot":"","sources":["../../../src/outbox/dispatchers/outbox.dispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAG7D,qBAAa,gBAAgB,CAC3B,YAAY,SAAS,WAAW,EAChC,aAAa,SAAS,YAAY;IAGhC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU;gBADV,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,cAAc,CAAC,YAAY,EAAE,aAAa,EAAE,MAAM,CAAC;IAGlF,gBAAgB,CAAC,MAAM,EAAE,aAAa;
|
|
1
|
+
{"version":3,"file":"outbox.dispatcher.d.ts","sourceRoot":"","sources":["../../../src/outbox/dispatchers/outbox.dispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAG7D,qBAAa,gBAAgB,CAC3B,YAAY,SAAS,WAAW,EAChC,aAAa,SAAS,YAAY;IAGhC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU;gBADV,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,cAAc,CAAC,YAAY,EAAE,aAAa,EAAE,MAAM,CAAC;IAGlF,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAkBtE,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAmBlF,eAAe,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;CAiBtE"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { UnprocessableEntityError } from '@volontariapp/errors';
|
|
1
2
|
import { OutboxStatus } from '../types/outbox.status.js';
|
|
2
3
|
export class OutboxDispatcher {
|
|
3
4
|
logger;
|
|
@@ -12,6 +13,7 @@ export class OutboxDispatcher {
|
|
|
12
13
|
status: entity.status,
|
|
13
14
|
id: entity.id,
|
|
14
15
|
});
|
|
16
|
+
throw new UnprocessableEntityError(`Cannot mark entity ${entity.id} as processing because it is not in PENDING status.`);
|
|
15
17
|
}
|
|
16
18
|
this.logger.info(`Marking outbox entity ${entity.id} as processing`);
|
|
17
19
|
entity.status = OutboxStatus.PROCESSING;
|
|
@@ -24,6 +26,7 @@ export class OutboxDispatcher {
|
|
|
24
26
|
status: entity.status,
|
|
25
27
|
id: entity.id,
|
|
26
28
|
});
|
|
29
|
+
throw new UnprocessableEntityError(`Cannot mark entity ${entity.id} as failed because it is not in PROCESSING status.`);
|
|
27
30
|
}
|
|
28
31
|
this.logger.error(`Marking outbox entity ${entity.id} as failed`, { error });
|
|
29
32
|
entity.status = OutboxStatus.FAILED;
|
|
@@ -37,6 +40,7 @@ export class OutboxDispatcher {
|
|
|
37
40
|
status: entity.status,
|
|
38
41
|
id: entity.id,
|
|
39
42
|
});
|
|
43
|
+
throw new UnprocessableEntityError(`Cannot mark entity ${entity.id} as completed because it is not in PROCESSING status.`);
|
|
40
44
|
}
|
|
41
45
|
this.logger.info(`Marking outbox entity ${entity.id} as done`);
|
|
42
46
|
entity.status = OutboxStatus.COMPLETED;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"outbox.dispatcher.js","sourceRoot":"","sources":["../../../src/outbox/dispatchers/outbox.dispatcher.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"outbox.dispatcher.js","sourceRoot":"","sources":["../../../src/outbox/dispatchers/outbox.dispatcher.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAIhE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,MAAM,OAAO,gBAAgB;IAKR;IACA;IAFnB,YACmB,MAAc,EACd,UAA+D;QAD/D,WAAM,GAAN,MAAM,CAAQ;QACd,eAAU,GAAV,UAAU,CAAqD;IAC/E,CAAC;IAEJ,gBAAgB,CAAC,MAAqB;QACpC,IAAI,MAAM,CAAC,MAAM,KAAK,YAAY,CAAC,OAAO,EAAE,CAAC;YAC3C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yEAAyE,EAAE;gBAC1F,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,EAAE,EAAE,MAAM,CAAC,EAAE;aACd,CAAC,CAAC;YACH,MAAM,IAAI,wBAAwB,CAChC,sBAAsB,MAAM,CAAC,EAAE,qDAAqD,CACrF,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,MAAM,CAAC,EAAE,gBAAgB,CAAC,CAAC;QAErE,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC,UAAU,CAAC;QACxC,MAAM,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;IAED,YAAY,CAAC,MAAqB,EAAE,KAAc;QAChD,IAAI,MAAM,CAAC,MAAM,KAAK,YAAY,CAAC,UAAU,EAAE,CAAC;YAC9C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yEAAyE,EAAE;gBAC1F,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,EAAE,EAAE,MAAM,CAAC,EAAE;aACd,CAAC,CAAC;YACH,MAAM,IAAI,wBAAwB,CAChC,sBAAsB,MAAM,CAAC,EAAE,oDAAoD,CACpF,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,MAAM,CAAC,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAE7E,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;QACpC,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;QACzB,MAAM,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;IAED,eAAe,CAAC,MAAqB;QACnC,IAAI,MAAM,CAAC,MAAM,KAAK,YAAY,CAAC,UAAU,EAAE,CAAC;YAC9C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uEAAuE,EAAE;gBACxF,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,EAAE,EAAE,MAAM,CAAC,EAAE;aACd,CAAC,CAAC;YACH,MAAM,IAAI,wBAAwB,CAChC,sBAAsB,MAAM,CAAC,EAAE,uDAAuD,CACvF,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC;QAE/D,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC;QACvC,MAAM,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;CACF"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { describe, expect, it, beforeEach } from '@jest/globals';
|
|
2
|
+
import { UnprocessableEntityError } from '@volontariapp/errors';
|
|
2
3
|
import { OutboxDispatcher } from '../../../outbox/dispatchers/outbox.dispatcher.js';
|
|
3
4
|
import { OutboxStatus } from '../../../outbox/types/outbox.status.js';
|
|
4
5
|
import { OutboxEntity } from '../../../outbox/entities/outbox.entity.js';
|
|
@@ -29,9 +30,9 @@ describe('OutboxDispatcher (Unit)', () => {
|
|
|
29
30
|
expect(repositoryMock.update).toHaveBeenCalledWith(entity.id, entity);
|
|
30
31
|
expect(loggerMock.info).toHaveBeenCalledWith('Marking outbox entity test-id as processing');
|
|
31
32
|
});
|
|
32
|
-
it('should warn if entity is not in PENDING status',
|
|
33
|
+
it('should throw UnprocessableEntityError and warn if entity is not in PENDING status', () => {
|
|
33
34
|
const entity = makeEntity(OutboxStatus.PROCESSING);
|
|
34
|
-
|
|
35
|
+
expect(() => dispatcher.markAsProcessing(entity)).toThrow(UnprocessableEntityError);
|
|
35
36
|
expect(loggerMock.warn).toHaveBeenCalledWith('Attempted to mark entity as processed, but it is not in PENDING status.', { status: entity.status, id: entity.id });
|
|
36
37
|
});
|
|
37
38
|
});
|
|
@@ -47,9 +48,9 @@ describe('OutboxDispatcher (Unit)', () => {
|
|
|
47
48
|
error,
|
|
48
49
|
});
|
|
49
50
|
});
|
|
50
|
-
it('should warn if entity is not in PROCESSING status',
|
|
51
|
+
it('should throw UnprocessableEntityError and warn if entity is not in PROCESSING status', () => {
|
|
51
52
|
const entity = makeEntity(OutboxStatus.PENDING);
|
|
52
|
-
|
|
53
|
+
expect(() => dispatcher.markAsFailed(entity)).toThrow(UnprocessableEntityError);
|
|
53
54
|
expect(loggerMock.warn).toHaveBeenCalledWith('Attempted to mark entity as failed, but it is not in PROCESSING status.', { status: OutboxStatus.PENDING, id: entity.id });
|
|
54
55
|
});
|
|
55
56
|
});
|
|
@@ -61,9 +62,9 @@ describe('OutboxDispatcher (Unit)', () => {
|
|
|
61
62
|
expect(repositoryMock.update).toHaveBeenCalledWith(entity.id, entity);
|
|
62
63
|
expect(loggerMock.info).toHaveBeenCalledWith('Marking outbox entity test-id as done');
|
|
63
64
|
});
|
|
64
|
-
it('should warn if entity is not in PROCESSING status',
|
|
65
|
+
it('should throw UnprocessableEntityError and warn if entity is not in PROCESSING status', () => {
|
|
65
66
|
const entity = makeEntity(OutboxStatus.PENDING);
|
|
66
|
-
|
|
67
|
+
expect(() => dispatcher.markAsCompleted(entity)).toThrow(UnprocessableEntityError);
|
|
67
68
|
expect(loggerMock.warn).toHaveBeenCalledWith('Attempted to mark entity as done, but it is not in PROCESSING status.', { status: OutboxStatus.PENDING, id: entity.id });
|
|
68
69
|
});
|
|
69
70
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"outbox.dispatcher.unit.spec.js","sourceRoot":"","sources":["../../../../src/test/outbox/dispatchers/outbox.dispatcher.unit.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kDAAkD,CAAC;AACpF,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AAEzE,OAAO,EAAE,cAAc,EAAuB,MAAM,2CAA2C,CAAC;AAChG,OAAO,EACL,wBAAwB,GAEzB,MAAM,sDAAsD,CAAC;AAG9D,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,IAAI,UAAuD,CAAC;IAC5D,IAAI,cAA+D,CAAC;IACpE,IAAI,UAA0B,CAAC;IAE/B,UAAU,CAAC,GAAG,EAAE;QACd,UAAU,GAAG,cAAc,EAAE,CAAC;QAC9B,cAAc,GAAG,wBAAwB,EAA6B,CAAC;QACvE,UAAU,GAAG,IAAI,gBAAgB,CAC/B,UAAmB,EACnB,cAA8E,CAC/E,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,CAAC,SAAuB,YAAY,CAAC,OAAO,EAAgB,EAAE;QAC/E,MAAM,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAClC,MAAM,CAAC,EAAE,GAAG,SAAS,CAAC;QACtB,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;QACvB,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;QACpB,MAAM,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IAEF,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAChC,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;YACtE,MAAM,MAAM,GAAG,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YAChD,MAAM,UAAU,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;YAE1C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;YACpD,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;YACtE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,6CAA6C,CAAC,CAAC;QAC9F,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"outbox.dispatcher.unit.spec.js","sourceRoot":"","sources":["../../../../src/test/outbox/dispatchers/outbox.dispatcher.unit.spec.ts"],"names":[],"mappings":"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"}
|