@hg-ts/repository 0.5.7 → 0.5.13

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 (35) hide show
  1. package/dist/repositories/base.event.repository.d.ts +2 -2
  2. package/dist/repositories/base.event.repository.d.ts.map +1 -1
  3. package/dist/repositories/base.event.repository.js +9 -5
  4. package/dist/repositories/base.event.repository.js.map +1 -1
  5. package/dist/repositories/base.memory.repository.d.ts +3 -4
  6. package/dist/repositories/base.memory.repository.d.ts.map +1 -1
  7. package/dist/repositories/base.memory.repository.js +0 -1
  8. package/dist/repositories/base.memory.repository.js.map +1 -1
  9. package/dist/repositories/base.repository.d.ts +8 -9
  10. package/dist/repositories/base.repository.d.ts.map +1 -1
  11. package/dist/repositories/base.repository.js +8 -11
  12. package/dist/repositories/base.repository.js.map +1 -1
  13. package/dist/repositories/event.repository.d.ts +4 -4
  14. package/dist/repositories/event.repository.d.ts.map +1 -1
  15. package/dist/repositories/repository.d.ts +8 -10
  16. package/dist/repositories/repository.d.ts.map +1 -1
  17. package/dist/repositories/repository.js.map +1 -1
  18. package/dist/tests/base-event-repository.test.d.ts +16 -0
  19. package/dist/tests/base-event-repository.test.d.ts.map +1 -0
  20. package/dist/tests/base-event-repository.test.js +124 -0
  21. package/dist/tests/base-event-repository.test.js.map +1 -0
  22. package/dist/tests/base-repository.test.d.ts +10 -3
  23. package/dist/tests/base-repository.test.d.ts.map +1 -1
  24. package/dist/tests/base-repository.test.js +92 -8
  25. package/dist/tests/base-repository.test.js.map +1 -1
  26. package/dist/tests/test-event.memory.repository.d.ts +8 -0
  27. package/dist/tests/test-event.memory.repository.d.ts.map +1 -0
  28. package/dist/tests/test-event.memory.repository.js +36 -0
  29. package/dist/tests/test-event.memory.repository.js.map +1 -0
  30. package/dist/tests/test.memory.repository.d.ts +0 -2
  31. package/dist/tests/test.memory.repository.d.ts.map +1 -1
  32. package/dist/tests/test.memory.repository.js +0 -7
  33. package/dist/tests/test.memory.repository.js.map +1 -1
  34. package/package.json +13 -13
  35. package/vitest.config.mjs +0 -3
@@ -3,11 +3,11 @@ import { AggregateAlreadyExistsException, AggregateNotFoundException } from '../
3
3
  import { BaseRepository, NotEmptyList } from './base.repository.js';
4
4
  import { EventFindOptions, EventRepository } from './event.repository.js';
5
5
  export declare abstract class BaseEventRepository extends BaseRepository<DomainEvent, EventFindOptions> implements EventRepository {
6
+ add(eventOrEvents: DomainEvent[] | DomainEvent): Promise<void>;
6
7
  getNextId(): Promise<string>;
7
8
  update(_entity: DomainEvent | DomainEvent[]): Promise<void>;
8
9
  delete(_entity: DomainEvent | DomainEvent[]): Promise<void>;
9
- clear(): Promise<void>;
10
- protected rawUpdate(_dtos: NotEmptyList<DomainEventDto>): Promise<void>;
10
+ protected rawUpdate(_entity: NotEmptyList<DomainEventDto>): Promise<void>;
11
11
  protected getNotFoundException(id: string): AggregateNotFoundException;
12
12
  protected getAlreadyExistsException(id: string): AggregateAlreadyExistsException;
13
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"base.event.repository.d.ts","sourceRoot":"","sources":["../../src/repositories/base.event.repository.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,WAAW,EACX,cAAc,EACd,MAAM,eAAe,CAAC;AAEvB,OAAO,EACN,+BAA+B,EAK/B,0BAA0B,EAC1B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACN,cAAc,EACd,YAAY,EACZ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACN,gBAAgB,EAChB,eAAe,EACf,MAAM,uBAAuB,CAAC;AAE/B,8BAAsB,mBACrB,SAAQ,cAAc,CAAC,WAAW,EAAE,gBAAgB,CAAE,YAAW,eAAe;IAC1D,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAI5B,MAAM,CAAC,OAAO,EAAE,WAAW,GAAG,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3D,MAAM,CAAC,OAAO,EAAE,WAAW,GAAG,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;cAInB,SAAS,CAAC,KAAK,EAAE,YAAY,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;cAInE,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,0BAA0B;cAI5D,yBAAyB,CAAC,EAAE,EAAE,MAAM,GAAG,+BAA+B;CAGzF"}
1
+ {"version":3,"file":"base.event.repository.d.ts","sourceRoot":"","sources":["../../src/repositories/base.event.repository.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,WAAW,EACX,cAAc,EAEd,MAAM,eAAe,CAAC;AAEvB,OAAO,EACN,+BAA+B,EAK/B,0BAA0B,EAC1B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACN,cAAc,EACd,YAAY,EACZ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACN,gBAAgB,EAChB,eAAe,EACf,MAAM,uBAAuB,CAAC;AAE/B,8BAAsB,mBACrB,SAAQ,cAAc,CAAC,WAAW,EAAE,gBAAgB,CAAE,YAAW,eAAe;IAC1D,GAAG,CAAC,aAAa,EAAE,WAAW,EAAE,GAAG,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAS9D,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAI5B,MAAM,CAAC,OAAO,EAAE,WAAW,GAAG,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3D,MAAM,CAAC,OAAO,EAAE,WAAW,GAAG,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;cAKxD,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;cAIrE,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,0BAA0B;cAI5D,yBAAyB,CAAC,EAAE,EAAE,MAAM,GAAG,+BAA+B;CAGzF"}
@@ -1,7 +1,14 @@
1
- import { DomainEvent, } from '@hg-ts/domain';
1
+ import { DomainEvent, STORED_PROPERTY, } from '@hg-ts/domain';
2
2
  import { AggregateEventAlreadyExistsException, AggregateEventDeleteRestrictedException, AggregateEventNotFoundException, AggregateEventUpdateRestrictedException, } from '../exceptions/index.js';
3
3
  import { BaseRepository, } from './base.repository.js';
4
4
  export class BaseEventRepository extends BaseRepository {
5
+ async add(eventOrEvents) {
6
+ const events = Array.isArray(eventOrEvents) ? eventOrEvents : [eventOrEvents];
7
+ await super.add(events.filter(item => !item[STORED_PROPERTY]));
8
+ events.forEach(event => {
9
+ event[STORED_PROPERTY] = true;
10
+ });
11
+ }
5
12
  async getNextId() {
6
13
  return DomainEvent.generateId();
7
14
  }
@@ -11,10 +18,7 @@ export class BaseEventRepository extends BaseRepository {
11
18
  async delete(_entity) {
12
19
  throw new AggregateEventDeleteRestrictedException();
13
20
  }
14
- async clear() {
15
- throw new AggregateEventDeleteRestrictedException();
16
- }
17
- async rawUpdate(_dtos) {
21
+ async rawUpdate(_entity) {
18
22
  throw new AggregateEventUpdateRestrictedException();
19
23
  }
20
24
  getNotFoundException(id) {
@@ -1 +1 @@
1
- {"version":3,"file":"base.event.repository.js","sourceRoot":"","sources":["../../src/repositories/base.event.repository.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,WAAW,GAEX,MAAM,eAAe,CAAC;AAEvB,OAAO,EAEN,oCAAoC,EACpC,uCAAuC,EACvC,+BAA+B,EAC/B,uCAAuC,GAEvC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACN,cAAc,GAEd,MAAM,sBAAsB,CAAC;AAM9B,MAAM,OAAgB,mBACrB,SAAQ,cAA6C;IACrC,KAAK,CAAC,SAAS;QAC9B,OAAO,WAAW,CAAC,UAAU,EAAE,CAAC;IACjC,CAAC;IAEe,KAAK,CAAC,MAAM,CAAC,OAAoC;QAChE,MAAM,IAAI,uCAAuC,EAAE,CAAC;IACrD,CAAC;IAEe,KAAK,CAAC,MAAM,CAAC,OAAoC;QAChE,MAAM,IAAI,uCAAuC,EAAE,CAAC;IACrD,CAAC;IAEe,KAAK,CAAC,KAAK;QAC1B,MAAM,IAAI,uCAAuC,EAAE,CAAC;IACrD,CAAC;IAEkB,KAAK,CAAC,SAAS,CAAC,KAAmC;QACrE,MAAM,IAAI,uCAAuC,EAAE,CAAC;IACrD,CAAC;IAEkB,oBAAoB,CAAC,EAAU;QACjD,MAAM,IAAI,+BAA+B,CAAC,EAAE,CAAC,CAAC;IAC/C,CAAC;IAEkB,yBAAyB,CAAC,EAAU;QACtD,MAAM,IAAI,oCAAoC,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;CACD"}
1
+ {"version":3,"file":"base.event.repository.js","sourceRoot":"","sources":["../../src/repositories/base.event.repository.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,WAAW,EAEX,eAAe,GACf,MAAM,eAAe,CAAC;AAEvB,OAAO,EAEN,oCAAoC,EACpC,uCAAuC,EACvC,+BAA+B,EAC/B,uCAAuC,GAEvC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACN,cAAc,GAEd,MAAM,sBAAsB,CAAC;AAM9B,MAAM,OAAgB,mBACrB,SAAQ,cAA6C;IACrC,KAAK,CAAC,GAAG,CAAC,aAA0C;QACnE,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;QAC9E,MAAM,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAE/D,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACtB,KAAK,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC;QAC/B,CAAC,CAAC,CAAC;IACJ,CAAC;IAEe,KAAK,CAAC,SAAS;QAC9B,OAAO,WAAW,CAAC,UAAU,EAAE,CAAC;IACjC,CAAC;IAEe,KAAK,CAAC,MAAM,CAAC,OAAoC;QAChE,MAAM,IAAI,uCAAuC,EAAE,CAAC;IACrD,CAAC;IAEe,KAAK,CAAC,MAAM,CAAC,OAAoC;QAChE,MAAM,IAAI,uCAAuC,EAAE,CAAC;IACrD,CAAC;IAGkB,KAAK,CAAC,SAAS,CAAC,OAAqC;QACvE,MAAM,IAAI,uCAAuC,EAAE,CAAC;IACrD,CAAC;IAEkB,oBAAoB,CAAC,EAAU;QACjD,MAAM,IAAI,+BAA+B,CAAC,EAAE,CAAC,CAAC;IAC/C,CAAC;IAEkB,yBAAyB,CAAC,EAAU;QACtD,MAAM,IAAI,oCAAoC,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;CACD"}
@@ -1,9 +1,8 @@
1
1
  import type { BaseAggregate } from '@hg-ts/domain';
2
2
  import { BaseRepository, NotEmptyList } from './base.repository.js';
3
- import type { AggregateDto, AggregateId, BaseFindOptions } from './repository.js';
4
- export declare abstract class BaseMemoryRepository<Aggregate extends BaseAggregate<any, any>, FindOptions extends BaseFindOptions<Aggregate> = BaseFindOptions<Aggregate>> extends BaseRepository<Aggregate, FindOptions> {
5
- protected lastId: Nullable<AggregateId<Aggregate>>;
6
- protected readonly entitiesMap: Map<AggregateId<Aggregate>, AggregateDto<Aggregate>>;
3
+ import type { AggregateDto, BaseFindOptions } from './repository.js';
4
+ export declare abstract class BaseMemoryRepository<Aggregate extends BaseAggregate<any>, FindOptions extends BaseFindOptions = BaseFindOptions> extends BaseRepository<Aggregate, FindOptions> {
5
+ protected readonly entitiesMap: Map<string, AggregateDto<Aggregate>>;
7
6
  rawAdd(entities: NotEmptyList<Aggregate>): Promise<void>;
8
7
  rawUpdate(entities: NotEmptyList<Aggregate>): Promise<void>;
9
8
  delete(aggregate: Aggregate | Aggregate[]): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"base.memory.repository.d.ts","sourceRoot":"","sources":["../../src/repositories/base.memory.repository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EACN,cAAc,EACd,YAAY,EACZ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EACX,YAAY,EACZ,WAAW,EACX,eAAe,EACf,MAAM,iBAAiB,CAAC;AAWzB,8BAAsB,oBAAoB,CAAC,SAAS,SAAS,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,EAChF,WAAW,SAAS,eAAe,CAAC,SAAS,CAAC,GAAG,eAAe,CAAC,SAAS,CAAC,CAE9E,SAAQ,cAAc,CAAC,SAAS,EAAE,WAAW,CAAC;IAC9C,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAQ;IAC1D,SAAS,CAAC,QAAQ,CAAC,WAAW,uDAA8D;IAE/E,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxD,SAAS,CAAC,QAAQ,EAAE,YAAY,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAMlD,MAAM,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;cAQ/D,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAiBxE,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,GAAG,EAAE,YAAY,CAAC,SAAS,CAAC,GAAG,SAAS;CAC3E"}
1
+ {"version":3,"file":"base.memory.repository.d.ts","sourceRoot":"","sources":["../../src/repositories/base.memory.repository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EACN,cAAc,EACd,YAAY,EACZ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EACX,YAAY,EACZ,eAAe,EACf,MAAM,iBAAiB,CAAC;AAWzB,8BAAsB,oBAAoB,CACzC,SAAS,SAAS,aAAa,CAAC,GAAG,CAAC,EACnC,WAAW,SAAS,eAAe,GAAG,eAAe,CAEtD,SAAQ,cAAc,CAAC,SAAS,EAAE,WAAW,CAAC;IAC9C,SAAS,CAAC,QAAQ,CAAC,WAAW,uCAA8C;IAE/D,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxD,SAAS,CAAC,QAAQ,EAAE,YAAY,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAMlD,MAAM,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;cAQ/D,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAiBxE,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,GAAG,EAAE,YAAY,CAAC,SAAS,CAAC,GAAG,SAAS;CAC3E"}
@@ -6,7 +6,6 @@ function clone(aggregate) {
6
6
  return result;
7
7
  }
8
8
  export class BaseMemoryRepository extends BaseRepository {
9
- lastId = null;
10
9
  entitiesMap = new Map();
11
10
  async rawAdd(entities) {
12
11
  for (const entity of entities) {
@@ -1 +1 @@
1
- {"version":3,"file":"base.memory.repository.js","sourceRoot":"","sources":["../../src/repositories/base.memory.repository.ts"],"names":[],"mappings":"AACA,OAAO,EACN,cAAc,GAEd,MAAM,sBAAsB,CAAC;AAO9B,SAAS,KAAK,CAAuC,SAAoB;IACxE,MAAM,kBAAkB,GAAG,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAEjD,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAEjC,OAAO,MAAM,CAAC;AACf,CAAC;AAED,MAAM,OAAgB,oBAGrB,SAAQ,cAAsC;IACpC,MAAM,GAAqC,IAAI,CAAC;IACvC,WAAW,GAAG,IAAI,GAAG,EAAmD,CAAC;IAErF,KAAK,CAAC,MAAM,CAAC,QAAiC;QACpD,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACxD,CAAC;IACF,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,QAAiC;QACvD,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACxD,CAAC;IACF,CAAC;IAEe,KAAK,CAAC,MAAM,CAAC,SAAkC;QAC9D,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAC,SAAS,EAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC7E,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACvC,CAAC;IACF,CAAC;IAES,KAAK,CAAC,YAAY,CAAC,OAAoB;QAChD,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC;QAEvB,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;YACvB,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;iBAC9C,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9E,CAAC;QAED,IAAI,OAAO,EAAE,KAAK,WAAW,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEtC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,CAAC;QAED,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7E,CAAC;CAGD"}
1
+ {"version":3,"file":"base.memory.repository.js","sourceRoot":"","sources":["../../src/repositories/base.memory.repository.ts"],"names":[],"mappings":"AACA,OAAO,EACN,cAAc,GAEd,MAAM,sBAAsB,CAAC;AAM9B,SAAS,KAAK,CAAuC,SAAoB;IACxE,MAAM,kBAAkB,GAAG,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAEjD,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAEjC,OAAO,MAAM,CAAC;AACf,CAAC;AAED,MAAM,OAAgB,oBAIrB,SAAQ,cAAsC;IAC3B,WAAW,GAAG,IAAI,GAAG,EAAmC,CAAC;IAErE,KAAK,CAAC,MAAM,CAAC,QAAiC;QACpD,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACxD,CAAC;IACF,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,QAAiC;QACvD,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACxD,CAAC;IACF,CAAC;IAEe,KAAK,CAAC,MAAM,CAAC,SAAkC;QAC9D,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAC,SAAS,EAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC7E,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACvC,CAAC;IACF,CAAC;IAES,KAAK,CAAC,YAAY,CAAC,OAAoB;QAChD,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC;QAEvB,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;YACvB,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;iBAC9C,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9E,CAAC;QAED,IAAI,OAAO,EAAE,KAAK,WAAW,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEtC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,CAAC;QAED,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7E,CAAC;CAGD"}
@@ -1,23 +1,22 @@
1
1
  import { BaseAggregate, DomainEvent } from '@hg-ts/domain';
2
2
  import { AggregateAlreadyExistsException, AggregateNotFoundException } from '../exceptions/index.js';
3
- import { AggregateId, BaseFindOptions, Repository } from './repository.js';
3
+ import { BaseFindOptions, Repository } from './repository.js';
4
4
  export type NotEmptyList<T> = [T, ...T[]];
5
- export declare abstract class BaseRepository<Aggregate extends (BaseAggregate<any> | DomainEvent), FindOptions extends BaseFindOptions<Aggregate> = BaseFindOptions<Aggregate>> extends Repository<Aggregate, FindOptions> {
6
- get(id: AggregateId<Aggregate>): Promise<Nullable<Aggregate>>;
7
- getOrFail(id: AggregateId<Aggregate>): Promise<Aggregate>;
8
- has(id: AggregateId<Aggregate>): Promise<boolean>;
5
+ export declare abstract class BaseRepository<Aggregate extends (BaseAggregate<any> | DomainEvent), FindOptions extends BaseFindOptions = BaseFindOptions> extends Repository<Aggregate, FindOptions> {
6
+ getNextId(): Promise<string>;
7
+ get(id: string): Promise<Nullable<Aggregate>>;
8
+ getOrFail(id: string): Promise<Aggregate>;
9
+ has(id: string): Promise<boolean>;
9
10
  find(options?: Partial<FindOptions>): Promise<Aggregate[]>;
10
11
  add(entityOrEntities: Aggregate[] | Aggregate): Promise<void>;
11
12
  update(entityOrEntities: Aggregate[] | Aggregate): Promise<void>;
12
- clear(): Promise<void>;
13
13
  delete(_entities: Aggregate[] | Aggregate): Promise<void>;
14
14
  protected onEmptyAdd(): void;
15
15
  protected onEmptyUpdate(): void;
16
- protected getId(aggregate: Aggregate): AggregateId<Aggregate>;
17
16
  protected abstract findEntities(options?: Partial<FindOptions>): Promise<Aggregate[]>;
18
17
  protected abstract rawAdd(dtos: NotEmptyList<Aggregate>): Promise<void>;
19
18
  protected abstract rawUpdate(dtos: NotEmptyList<Aggregate>): Promise<void>;
20
- protected abstract getNotFoundException(id: AggregateId<Aggregate>): AggregateNotFoundException;
21
- protected abstract getAlreadyExistsException(id: AggregateId<Aggregate>): AggregateAlreadyExistsException;
19
+ protected abstract getNotFoundException(id: string): AggregateNotFoundException;
20
+ protected abstract getAlreadyExistsException(id: string): AggregateAlreadyExistsException;
22
21
  }
23
22
  //# sourceMappingURL=base.repository.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"base.repository.d.ts","sourceRoot":"","sources":["../../src/repositories/base.repository.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,aAAa,EACb,WAAW,EACX,MAAM,eAAe,CAAC;AAEvB,OAAO,EACN,+BAA+B,EAC/B,0BAA0B,EAC1B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACN,WAAW,EACX,eAAe,EACf,UAAU,EACV,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;AAE1C,8BAAsB,cAAc,CAAC,SAAS,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,EACxF,WAAW,SAAS,eAAe,CAAC,SAAS,CAAC,GAAG,eAAe,CAAC,SAAS,CAAC,CAC3E,SAAQ,UAAU,CAAC,SAAS,EAAE,WAAW,CAAC;IAC7B,GAAG,CAAC,EAAE,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAO7D,SAAS,CAAC,EAAE,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;IAUzD,GAAG,CAAC,EAAE,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAMjD,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAM1D,GAAG,CAAC,gBAAgB,EAAE,SAAS,EAAE,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB7D,MAAM,CAAC,gBAAgB,EAAE,SAAS,EAAE,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBhE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAItE,SAAS,CAAC,UAAU,IAAI,IAAI;IAC5B,SAAS,CAAC,aAAa,IAAI,IAAI;IAE/B,SAAS,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC;IAI7D,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAErF,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IACvE,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1E,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,0BAA0B;IAE/F,SAAS,CAAC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,+BAA+B;CACzG"}
1
+ {"version":3,"file":"base.repository.d.ts","sourceRoot":"","sources":["../../src/repositories/base.repository.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,aAAa,EACb,WAAW,EACX,MAAM,eAAe,CAAC;AAIvB,OAAO,EACN,+BAA+B,EAC/B,0BAA0B,EAC1B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACN,eAAe,EACf,UAAU,EACV,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;AAE1C,8BAAsB,cAAc,CAAC,SAAS,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,EACxF,WAAW,SAAS,eAAe,GAAG,eAAe,CACrD,SAAQ,UAAU,CAAC,SAAS,EAAE,WAAW,CAAC;IAC7B,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAG5B,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAO7C,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAUzC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAMjC,IAAI,CAAC,OAAO,GAAE,OAAO,CAAC,WAAW,CAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAI9D,GAAG,CAAC,gBAAgB,EAAE,SAAS,EAAE,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB7D,MAAM,CAAC,gBAAgB,EAAE,SAAS,EAAE,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBhE,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAItE,SAAS,CAAC,UAAU,IAAI,IAAI;IAC5B,SAAS,CAAC,aAAa,IAAI,IAAI;IAE/B,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAErF,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IACvE,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1E,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,0BAA0B;IAE/E,SAAS,CAAC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,EAAE,MAAM,GAAG,+BAA+B;CACzF"}
@@ -1,6 +1,10 @@
1
1
  import { WillNeverHappenedException } from '@hg-ts/exception';
2
+ import { v7 as uuid } from 'uuid';
2
3
  import { Repository, } from './repository.js';
3
4
  export class BaseRepository extends Repository {
5
+ async getNextId() {
6
+ return uuid();
7
+ }
4
8
  async get(id) {
5
9
  const [entity] = await this.find({ id });
6
10
  return entity || null;
@@ -16,9 +20,8 @@ export class BaseRepository extends Repository {
16
20
  const entity = await this.get(id);
17
21
  return entity !== null;
18
22
  }
19
- async find(options) {
20
- const entities = await this.findEntities(options);
21
- return entities;
23
+ async find(options = {}) {
24
+ return this.findEntities(options);
22
25
  }
23
26
  async add(entityOrEntities) {
24
27
  const entities = Array.isArray(entityOrEntities) ? entityOrEntities : [entityOrEntities];
@@ -29,7 +32,7 @@ export class BaseRepository extends Repository {
29
32
  const ids = entities.map(({ id }) => id);
30
33
  const existEntities = await this.find({ id: ids });
31
34
  if (existEntities.length > 0 && existEntities[0]) {
32
- throw this.getAlreadyExistsException(this.getId(existEntities[0]));
35
+ throw this.getAlreadyExistsException(existEntities[0].id);
33
36
  }
34
37
  await this.rawAdd(entities);
35
38
  }
@@ -44,20 +47,14 @@ export class BaseRepository extends Repository {
44
47
  const ids = entities.map(({ id }) => id);
45
48
  const existEntities = await this.find({ id: ids });
46
49
  if (existEntities.length < entities.length && entities[0]) {
47
- throw this.getNotFoundException(this.getId(existEntities[0] ?? entities[0]));
50
+ throw this.getNotFoundException(existEntities[0]?.id ?? entities[0].id);
48
51
  }
49
52
  await this.rawUpdate(entities);
50
53
  }
51
- async clear() {
52
- throw new WillNeverHappenedException('The clean method is not implemented, so cleaning the repository is not allowed.');
53
- }
54
54
  async delete(_entities) {
55
55
  throw new WillNeverHappenedException('The delete method is not implemented, so deleting entities is not allowed.');
56
56
  }
57
57
  onEmptyAdd() { }
58
58
  onEmptyUpdate() { }
59
- getId(aggregate) {
60
- return aggregate.id;
61
- }
62
59
  }
63
60
  //# sourceMappingURL=base.repository.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"base.repository.js","sourceRoot":"","sources":["../../src/repositories/base.repository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base.repository.js","sourceRoot":"","sources":["../../src/repositories/base.repository.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  import { DomainEvent } from '@hg-ts/domain';
2
2
  import { BaseFindOptions, Repository } from './repository.js';
3
- export type EventFindOptions = BaseFindOptions<DomainEvent> & {
4
- entityId: string | string[];
5
- entityName: string;
6
- limit: number;
3
+ export type EventFindOptions = BaseFindOptions & {
4
+ entityId?: string | string[];
5
+ entityName?: string;
6
+ limit?: number;
7
7
  };
8
8
  export declare abstract class EventRepository extends Repository<DomainEvent, EventFindOptions> {
9
9
  }
@@ -1 +1 @@
1
- {"version":3,"file":"event.repository.d.ts","sourceRoot":"","sources":["../../src/repositories/event.repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EACN,eAAe,EACf,UAAU,EACV,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,gBAAgB,GAAG,eAAe,CAAC,WAAW,CAAC,GAAG;IAC7D,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,8BAAsB,eACrB,SAAQ,UAAU,CAAC,WAAW,EAAE,gBAAgB,CAAC;CACjD"}
1
+ {"version":3,"file":"event.repository.d.ts","sourceRoot":"","sources":["../../src/repositories/event.repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EACN,eAAe,EACf,UAAU,EACV,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,gBAAgB,GAAG,eAAe,GAAG;IAChD,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,8BAAsB,eACrB,SAAQ,UAAU,CAAC,WAAW,EAAE,gBAAgB,CAAC;CACjD"}
@@ -1,18 +1,16 @@
1
- import { BaseAggregate, DomainEvent, Identifiable } from '@hg-ts/domain';
2
- export type AggregateId<Aggregate extends BaseAggregate<any> | DomainEvent> = Aggregate extends Identifiable<infer IdType> ? IdType : never;
1
+ import { BaseAggregate, DomainEvent } from '@hg-ts/domain';
3
2
  export type AggregateDto<Aggregate extends BaseAggregate<any> | DomainEvent> = ReturnType<Aggregate['toDto']>;
4
- export type BaseFindOptions<Aggregate extends BaseAggregate<any> | DomainEvent> = {
5
- id?: AggregateId<Aggregate> | AggregateId<Aggregate>[];
3
+ export type BaseFindOptions = {
4
+ id?: string | string[];
6
5
  };
7
- export declare abstract class Repository<Aggregate extends BaseAggregate<any> | DomainEvent, FindOptions extends BaseFindOptions<Aggregate> = BaseFindOptions<Aggregate>> {
8
- abstract getNextId(): Promise<AggregateId<Aggregate>>;
9
- abstract get(id: AggregateId<Aggregate>): Promise<Nullable<Aggregate>>;
10
- abstract getOrFail(id: AggregateId<Aggregate>): Promise<Aggregate>;
6
+ export declare abstract class Repository<Aggregate extends BaseAggregate<any> | DomainEvent, FindOptions extends BaseFindOptions = BaseFindOptions> {
7
+ abstract getNextId(): Promise<string>;
8
+ abstract get(id: string): Promise<Nullable<Aggregate>>;
9
+ abstract getOrFail(id: string): Promise<Aggregate>;
11
10
  abstract find(options?: FindOptions): Promise<Aggregate[]>;
12
11
  abstract add(entity: Aggregate | Aggregate[]): Promise<void>;
13
12
  abstract update(entity: Aggregate | Aggregate[]): Promise<void>;
14
13
  abstract delete(entity: Aggregate | Aggregate[]): Promise<void>;
15
- abstract has(id: AggregateId<Aggregate>): Promise<boolean>;
16
- abstract clear(): Promise<void>;
14
+ abstract has(id: string): Promise<boolean>;
17
15
  }
18
16
  //# sourceMappingURL=repository.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../src/repositories/repository.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,aAAa,EACb,WAAW,EACX,YAAY,EACZ,MAAM,eAAe,CAAC;AAEvB,MAAM,MAAM,WAAW,CAAC,SAAS,SAAS,aAAa,CAAC,GAAG,CAAC,GAAG,WAAW,IACzE,SAAS,SAAS,YAAY,CAAC,MAAM,MAAM,CAAC,GACzC,MAAM,GACN,KAAK,CAAC;AAEV,MAAM,MAAM,YAAY,CAAC,SAAS,SAAS,aAAa,CAAC,GAAG,CAAC,GAAG,WAAW,IAC1E,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;AAE/B,MAAM,MAAM,eAAe,CAAC,SAAS,SAAS,aAAa,CAAC,GAAG,CAAC,GAAG,WAAW,IAAI;IACjF,EAAE,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;CACvD,CAAC;AAEF,8BAAsB,UAAU,CAAC,SAAS,SAAS,aAAa,CAAC,GAAG,CAAC,GAAG,WAAW,EAClF,WAAW,SAAS,eAAe,CAAC,SAAS,CAAC,GAAG,eAAe,CAAC,SAAS,CAAC;aAC3D,SAAS,IAAI,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;aAE5C,GAAG,CAAC,EAAE,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;aAE7D,SAAS,CAAC,EAAE,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;aAEzD,IAAI,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;aAEjD,GAAG,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;aAEnD,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;aAEtD,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;aAEtD,GAAG,CAAC,EAAE,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;aAEjD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CACtC"}
1
+ {"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../src/repositories/repository.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,aAAa,EACb,WAAW,EACX,MAAM,eAAe,CAAC;AAEvB,MAAM,MAAM,YAAY,CAAC,SAAS,SAAS,aAAa,CAAC,GAAG,CAAC,GAAG,WAAW,IAC1E,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;AAE/B,MAAM,MAAM,eAAe,GAAG;IAC7B,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CACvB,CAAC;AAEF,8BAAsB,UAAU,CAAC,SAAS,SAAS,aAAa,CAAC,GAAG,CAAC,GAAG,WAAW,EAClF,WAAW,SAAS,eAAe,GAAG,eAAe;aACrC,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;aAE5B,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;aAE7C,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;aAEzC,IAAI,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;aAEjD,GAAG,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;aAEnD,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;aAEtD,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;aAEtD,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CACjD"}
@@ -1 +1 @@
1
- {"version":3,"file":"repository.js","sourceRoot":"","sources":["../../src/repositories/repository.ts"],"names":[],"mappings":"AAkBA,MAAM,OAAgB,UAAU;CAmB/B"}
1
+ {"version":3,"file":"repository.js","sourceRoot":"","sources":["../../src/repositories/repository.ts"],"names":[],"mappings":"AAYA,MAAM,OAAgB,UAAU;CAiB/B"}
@@ -0,0 +1,16 @@
1
+ import { Suite } from '@hg-ts/tests';
2
+ export declare class BaseRepositoryTestSuite extends Suite {
3
+ private repository;
4
+ getNextId(): Promise<void>;
5
+ addEmpty(): Promise<void>;
6
+ add(): Promise<void>;
7
+ update(): Promise<void>;
8
+ delete(): Promise<void>;
9
+ getNotFound(): Promise<void>;
10
+ addDuplicateAllowed(): Promise<void>;
11
+ addWithDuplicateId(): Promise<void>;
12
+ getNotFoundWithoutExceptionTest(): Promise<void>;
13
+ beforeEach(): Promise<void>;
14
+ private createEvent;
15
+ }
16
+ //# sourceMappingURL=base-event-repository.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-event-repository.test.d.ts","sourceRoot":"","sources":["../../src/tests/base-event-repository.test.ts"],"names":[],"mappings":"AAIA,OAAO,EAIN,KAAK,EAEL,MAAM,cAAc,CAAC;AAatB,qBACa,uBAAwB,SAAQ,KAAK;IACjD,OAAO,CAAC,UAAU,CAA4B;IAGjC,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAO1B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAKzB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAWpB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAQvB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAQvB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAQpC,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAQnC,+BAA+B,IAAI,OAAO,CAAC,IAAI,CAAC;IAMvC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjD,OAAO,CAAC,WAAW;CAQnB"}
@@ -0,0 +1,124 @@
1
+ import { __decorate, __metadata } from "tslib";
2
+ import { DomainEvent, STORED_PROPERTY, } from '@hg-ts/domain';
3
+ import { Describe, expect, ExpectException, Suite, Test, } from '@hg-ts/tests';
4
+ import { v4 as uuid, validate, } from 'uuid';
5
+ import { AggregateEventAlreadyExistsException, AggregateEventDeleteRestrictedException, AggregateEventNotFoundException, AggregateEventUpdateRestrictedException, } from '../exceptions/index.js';
6
+ import { TestEventMemoryRepository } from './test-event.memory.repository.js';
7
+ let BaseRepositoryTestSuite = class BaseRepositoryTestSuite extends Suite {
8
+ repository;
9
+ async getNextId() {
10
+ const id = await this.repository.getNextId();
11
+ expect(validate(id)).toBeTruthy();
12
+ }
13
+ async addEmpty() {
14
+ await this.repository.add([]);
15
+ }
16
+ async add() {
17
+ const event = this.createEvent();
18
+ await this.repository.add(event);
19
+ const found = await this.repository.getOrFail(event.id);
20
+ expect(found).toMatchObject(event);
21
+ }
22
+ async update() {
23
+ const event = this.createEvent();
24
+ await this.repository.add(event);
25
+ await this.repository.update(event);
26
+ }
27
+ async delete() {
28
+ const event = this.createEvent();
29
+ await this.repository.add(event);
30
+ await this.repository.delete(event);
31
+ }
32
+ async getNotFound() {
33
+ await this.repository.getOrFail(DomainEvent.generateId());
34
+ }
35
+ async addDuplicateAllowed() {
36
+ const event = this.createEvent();
37
+ await this.repository.add(event);
38
+ await this.repository.add(event);
39
+ }
40
+ async addWithDuplicateId() {
41
+ const event = this.createEvent();
42
+ await this.repository.add(event);
43
+ event[STORED_PROPERTY] = false;
44
+ await this.repository.add(event);
45
+ }
46
+ async getNotFoundWithoutExceptionTest() {
47
+ const id = uuid();
48
+ await this.repository.get(id);
49
+ }
50
+ async beforeEach() {
51
+ this.repository = new TestEventMemoryRepository();
52
+ }
53
+ createEvent() {
54
+ return new DomainEvent({
55
+ occurredOn: new Date(),
56
+ entityName: 'Test',
57
+ entityId: uuid(),
58
+ body: {},
59
+ });
60
+ }
61
+ };
62
+ __decorate([
63
+ Test(),
64
+ __metadata("design:type", Function),
65
+ __metadata("design:paramtypes", []),
66
+ __metadata("design:returntype", Promise)
67
+ ], BaseRepositoryTestSuite.prototype, "getNextId", null);
68
+ __decorate([
69
+ Test(),
70
+ __metadata("design:type", Function),
71
+ __metadata("design:paramtypes", []),
72
+ __metadata("design:returntype", Promise)
73
+ ], BaseRepositoryTestSuite.prototype, "addEmpty", null);
74
+ __decorate([
75
+ Test(),
76
+ __metadata("design:type", Function),
77
+ __metadata("design:paramtypes", []),
78
+ __metadata("design:returntype", Promise)
79
+ ], BaseRepositoryTestSuite.prototype, "add", null);
80
+ __decorate([
81
+ Test(),
82
+ ExpectException(AggregateEventUpdateRestrictedException),
83
+ __metadata("design:type", Function),
84
+ __metadata("design:paramtypes", []),
85
+ __metadata("design:returntype", Promise)
86
+ ], BaseRepositoryTestSuite.prototype, "update", null);
87
+ __decorate([
88
+ Test(),
89
+ ExpectException(AggregateEventDeleteRestrictedException),
90
+ __metadata("design:type", Function),
91
+ __metadata("design:paramtypes", []),
92
+ __metadata("design:returntype", Promise)
93
+ ], BaseRepositoryTestSuite.prototype, "delete", null);
94
+ __decorate([
95
+ Test(),
96
+ ExpectException(AggregateEventNotFoundException),
97
+ __metadata("design:type", Function),
98
+ __metadata("design:paramtypes", []),
99
+ __metadata("design:returntype", Promise)
100
+ ], BaseRepositoryTestSuite.prototype, "getNotFound", null);
101
+ __decorate([
102
+ Test(),
103
+ __metadata("design:type", Function),
104
+ __metadata("design:paramtypes", []),
105
+ __metadata("design:returntype", Promise)
106
+ ], BaseRepositoryTestSuite.prototype, "addDuplicateAllowed", null);
107
+ __decorate([
108
+ Test(),
109
+ ExpectException(AggregateEventAlreadyExistsException),
110
+ __metadata("design:type", Function),
111
+ __metadata("design:paramtypes", []),
112
+ __metadata("design:returntype", Promise)
113
+ ], BaseRepositoryTestSuite.prototype, "addWithDuplicateId", null);
114
+ __decorate([
115
+ Test(),
116
+ __metadata("design:type", Function),
117
+ __metadata("design:paramtypes", []),
118
+ __metadata("design:returntype", Promise)
119
+ ], BaseRepositoryTestSuite.prototype, "getNotFoundWithoutExceptionTest", null);
120
+ BaseRepositoryTestSuite = __decorate([
121
+ Describe()
122
+ ], BaseRepositoryTestSuite);
123
+ export { BaseRepositoryTestSuite };
124
+ //# sourceMappingURL=base-event-repository.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-event-repository.test.js","sourceRoot":"","sources":["../../src/tests/base-event-repository.test.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,15 @@
1
1
  import { Suite } from '@hg-ts/tests';
2
2
  export declare class BaseRepositoryTestSuite extends Suite {
3
- private readonly repository;
4
- saveTest(): Promise<void>;
5
- deleteTest(): Promise<void>;
3
+ private repository;
4
+ getNextId(): Promise<void>;
5
+ has(): Promise<void>;
6
+ saveEmpty(): Promise<void>;
7
+ save(): Promise<void>;
8
+ saveDuplicate(): Promise<void>;
9
+ updateEmpty(): Promise<void>;
10
+ updateNotFound(): Promise<void>;
11
+ delete(): Promise<void>;
12
+ deleteList(): Promise<void>;
6
13
  updateTest(): Promise<void>;
7
14
  getOrFailNotFoundExceptionTest(): Promise<void>;
8
15
  getNotFoundWithoutExceptionTest(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"base-repository.test.d.ts","sourceRoot":"","sources":["../../src/tests/base-repository.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAIN,KAAK,EAEL,MAAM,cAAc,CAAC;AAOtB,qBACa,uBAAwB,SAAQ,KAAK;IACjD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA8B;IAG5C,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAezB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAe3B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAyB3B,8BAA8B,IAAI,OAAO,CAAC,IAAI,CAAC;IAO/C,+BAA+B,IAAI,OAAO,CAAC,IAAI,CAAC;IAMvC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAGjD"}
1
+ {"version":3,"file":"base-repository.test.d.ts","sourceRoot":"","sources":["../../src/tests/base-repository.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAIN,KAAK,EAEL,MAAM,cAAc,CAAC;AAWtB,qBACa,uBAAwB,SAAQ,KAAK;IACjD,OAAO,CAAC,UAAU,CAAuB;IAG5B,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAO1B,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAYpB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAK1B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAoBrB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAS9B,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAO/B,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBvB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAc3B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAyB3B,8BAA8B,IAAI,OAAO,CAAC,IAAI,CAAC;IAO/C,+BAA+B,IAAI,OAAO,CAAC,IAAI,CAAC;IAMvC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAGjD"}
@@ -1,12 +1,27 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
2
  import { Describe, expect, ExpectException, Suite, Test, } from '@hg-ts/tests';
3
- import { v4 as uuid } from 'uuid';
3
+ import { v4 as uuid, validate, } from 'uuid';
4
4
  import { TestAggregate } from './test.aggregate.js';
5
+ import { TestAlreadyExistsException } from './test.already-exists.exception.js';
5
6
  import { TestMemoryRepository } from './test.memory.repository.js';
6
7
  import { TestNotFoundException } from './test.not-found.exception.js';
7
8
  let BaseRepositoryTestSuite = class BaseRepositoryTestSuite extends Suite {
8
- repository = new TestMemoryRepository();
9
- async saveTest() {
9
+ repository;
10
+ async getNextId() {
11
+ const id = await this.repository.getNextId();
12
+ expect(validate(id)).toBeTruthy();
13
+ }
14
+ async has() {
15
+ const id = uuid();
16
+ const aggregate = new TestAggregate(id);
17
+ await this.repository.add(aggregate);
18
+ const exists = await this.repository.has(id);
19
+ expect(exists).toBeTruthy();
20
+ }
21
+ async saveEmpty() {
22
+ await this.repository.add([]);
23
+ }
24
+ async save() {
10
25
  const id = uuid();
11
26
  const aggregate = new TestAggregate(id);
12
27
  await this.repository.add(aggregate);
@@ -14,15 +29,41 @@ let BaseRepositoryTestSuite = class BaseRepositoryTestSuite extends Suite {
14
29
  expect(savedAggregate).toBeInstanceOf(TestAggregate);
15
30
  expect(savedAggregate).not.toBe(aggregate);
16
31
  expect({ ...savedAggregate }).toMatchObject({ ...aggregate });
32
+ const found = await this.repository.find();
33
+ expect(found).toHaveLength(1);
34
+ expect(found[0]).toMatchObject(savedAggregate);
35
+ }
36
+ async saveDuplicate() {
37
+ const id = uuid();
38
+ const aggregate = new TestAggregate(id);
39
+ await this.repository.add(aggregate);
40
+ await this.repository.add(aggregate);
41
+ }
42
+ async updateEmpty() {
43
+ await this.repository.update([]);
44
+ }
45
+ async updateNotFound() {
46
+ const id = uuid();
47
+ const aggregate = new TestAggregate(id);
48
+ await this.repository.update(aggregate);
17
49
  }
18
- async deleteTest() {
50
+ async delete() {
19
51
  const id = uuid();
20
52
  const aggregate = new TestAggregate(id);
21
53
  await this.repository.add(aggregate);
22
54
  const savedAggregate = await this.repository.getOrFail(id);
23
55
  expect(savedAggregate).toBeInstanceOf(TestAggregate);
24
56
  await this.repository.delete(aggregate);
25
- await this.repository.getOrFail(id);
57
+ const found = await this.repository.get(id);
58
+ expect(found).toBeNull();
59
+ }
60
+ async deleteList() {
61
+ await this.repository.add(new TestAggregate(uuid()));
62
+ await this.repository.add(new TestAggregate(uuid()));
63
+ const found = await this.repository.find();
64
+ await this.repository.delete(found);
65
+ const foundAfterDelete = await this.repository.find();
66
+ expect(foundAfterDelete).toHaveLength(0);
26
67
  }
27
68
  async updateTest() {
28
69
  const id = uuid();
@@ -49,7 +90,7 @@ let BaseRepositoryTestSuite = class BaseRepositoryTestSuite extends Suite {
49
90
  await this.repository.get(id);
50
91
  }
51
92
  async beforeEach() {
52
- await this.repository.clear();
93
+ this.repository = new TestMemoryRepository();
53
94
  }
54
95
  };
55
96
  __decorate([
@@ -57,14 +98,57 @@ __decorate([
57
98
  __metadata("design:type", Function),
58
99
  __metadata("design:paramtypes", []),
59
100
  __metadata("design:returntype", Promise)
60
- ], BaseRepositoryTestSuite.prototype, "saveTest", null);
101
+ ], BaseRepositoryTestSuite.prototype, "getNextId", null);
102
+ __decorate([
103
+ Test(),
104
+ __metadata("design:type", Function),
105
+ __metadata("design:paramtypes", []),
106
+ __metadata("design:returntype", Promise)
107
+ ], BaseRepositoryTestSuite.prototype, "has", null);
108
+ __decorate([
109
+ Test(),
110
+ __metadata("design:type", Function),
111
+ __metadata("design:paramtypes", []),
112
+ __metadata("design:returntype", Promise)
113
+ ], BaseRepositoryTestSuite.prototype, "saveEmpty", null);
114
+ __decorate([
115
+ Test(),
116
+ __metadata("design:type", Function),
117
+ __metadata("design:paramtypes", []),
118
+ __metadata("design:returntype", Promise)
119
+ ], BaseRepositoryTestSuite.prototype, "save", null);
120
+ __decorate([
121
+ Test(),
122
+ ExpectException(TestAlreadyExistsException),
123
+ __metadata("design:type", Function),
124
+ __metadata("design:paramtypes", []),
125
+ __metadata("design:returntype", Promise)
126
+ ], BaseRepositoryTestSuite.prototype, "saveDuplicate", null);
127
+ __decorate([
128
+ Test(),
129
+ __metadata("design:type", Function),
130
+ __metadata("design:paramtypes", []),
131
+ __metadata("design:returntype", Promise)
132
+ ], BaseRepositoryTestSuite.prototype, "updateEmpty", null);
61
133
  __decorate([
62
134
  Test(),
63
135
  ExpectException(TestNotFoundException),
64
136
  __metadata("design:type", Function),
65
137
  __metadata("design:paramtypes", []),
66
138
  __metadata("design:returntype", Promise)
67
- ], BaseRepositoryTestSuite.prototype, "deleteTest", null);
139
+ ], BaseRepositoryTestSuite.prototype, "updateNotFound", null);
140
+ __decorate([
141
+ Test(),
142
+ __metadata("design:type", Function),
143
+ __metadata("design:paramtypes", []),
144
+ __metadata("design:returntype", Promise)
145
+ ], BaseRepositoryTestSuite.prototype, "delete", null);
146
+ __decorate([
147
+ Test(),
148
+ __metadata("design:type", Function),
149
+ __metadata("design:paramtypes", []),
150
+ __metadata("design:returntype", Promise)
151
+ ], BaseRepositoryTestSuite.prototype, "deleteList", null);
68
152
  __decorate([
69
153
  Test(),
70
154
  __metadata("design:type", Function),
@@ -1 +1 @@
1
- {"version":3,"file":"base-repository.test.js","sourceRoot":"","sources":["../../src/tests/base-repository.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base-repository.test.js","sourceRoot":"","sources":["../../src/tests/base-repository.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { DomainEvent } from '@hg-ts/domain';
2
+ import { BaseEventRepository, EventFindOptions, NotEmptyList } from '../repositories/index.js';
3
+ export declare class TestEventMemoryRepository extends BaseEventRepository {
4
+ private readonly events;
5
+ protected findEntities(options?: Partial<EventFindOptions>): Promise<DomainEvent[]>;
6
+ protected rawAdd(events: NotEmptyList<DomainEvent>): Promise<void>;
7
+ }
8
+ //# sourceMappingURL=test-event.memory.repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-event.memory.repository.d.ts","sourceRoot":"","sources":["../../src/tests/test-event.memory.repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EACN,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,MAAM,0BAA0B,CAAC;AAElC,qBAAa,yBAA0B,SAAQ,mBAAmB;IACjE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkC;cAGzC,YAAY,CAAC,OAAO,GAAE,OAAO,CAAC,gBAAgB,CAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;cAkC7E,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAKxE"}
@@ -0,0 +1,36 @@
1
+ import { BaseEventRepository, } from '../repositories/index.js';
2
+ export class TestEventMemoryRepository extends BaseEventRepository {
3
+ events = new Map();
4
+ async findEntities(options = {}) {
5
+ const { id, entityId, entityName, limit } = options;
6
+ const events = [...this.events.values()]
7
+ .filter(event => {
8
+ if (id) {
9
+ if (Array.isArray(id)) {
10
+ return id.includes(event.id);
11
+ }
12
+ return event.id === id;
13
+ }
14
+ if (entityId) {
15
+ if (Array.isArray(entityId)) {
16
+ return entityId.includes(event.entityId);
17
+ }
18
+ return event.entityId === entityId;
19
+ }
20
+ if (entityName) {
21
+ return event.entityName === entityName;
22
+ }
23
+ return true;
24
+ });
25
+ if (limit && limit > 0) {
26
+ return events.slice(0, limit);
27
+ }
28
+ return events;
29
+ }
30
+ async rawAdd(events) {
31
+ events.forEach(event => {
32
+ this.events.set(event.id, event);
33
+ });
34
+ }
35
+ }
36
+ //# sourceMappingURL=test-event.memory.repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-event.memory.repository.js","sourceRoot":"","sources":["../../src/tests/test-event.memory.repository.ts"],"names":[],"mappings":"AAEA,OAAO,EACN,mBAAmB,GAGnB,MAAM,0BAA0B,CAAC;AAElC,MAAM,OAAO,yBAA0B,SAAQ,mBAAmB;IAChD,MAAM,GAAG,IAAI,GAAG,EAAuB,CAAC;IAG/C,KAAK,CAAC,YAAY,CAAC,UAAqC,EAAE;QACnE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;QACpD,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;aACtC,MAAM,CAAC,KAAK,CAAC,EAAE;YACf,IAAI,EAAE,EAAE,CAAC;gBACR,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;oBACvB,OAAO,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC9B,CAAC;gBAED,OAAO,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;YACxB,CAAC;YAED,IAAI,QAAQ,EAAE,CAAC;gBACd,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC7B,OAAO,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAC1C,CAAC;gBAED,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC;YACpC,CAAC;YAED,IAAI,UAAU,EAAE,CAAC;gBAChB,OAAO,KAAK,CAAC,UAAU,KAAK,UAAU,CAAC;YACxC,CAAC;YAED,OAAO,IAAI,CAAC;QACb,CAAC,CAAC,CAAC;QAEJ,IAAI,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACxB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC/B,CAAC;QAED,OAAO,MAAM,CAAC;IACf,CAAC;IAES,KAAK,CAAC,MAAM,CAAC,MAAiC;QACvD,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACtB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACJ,CAAC;CACD"}
@@ -2,8 +2,6 @@ import { AggregateAlreadyExistsException, AggregateNotFoundException } from '../
2
2
  import { AggregateDto, BaseMemoryRepository } from '../repositories/index.js';
3
3
  import { TestAggregate } from './test.aggregate.js';
4
4
  export declare class TestMemoryRepository extends BaseMemoryRepository<TestAggregate> {
5
- clear(): Promise<void>;
6
- getNextId(): Promise<TestAggregate['id']>;
7
5
  protected getNotFoundException(id: TestAggregate['id']): AggregateNotFoundException;
8
6
  protected getAlreadyExistsException(id: TestAggregate['id']): AggregateAlreadyExistsException;
9
7
  protected createAggregate(dto: AggregateDto<TestAggregate>): TestAggregate;
@@ -1 +1 @@
1
- {"version":3,"file":"test.memory.repository.d.ts","sourceRoot":"","sources":["../../src/tests/test.memory.repository.ts"],"names":[],"mappings":"AACA,OAAO,EACN,+BAA+B,EAC/B,0BAA0B,EAC1B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACN,YAAY,EACZ,oBAAoB,EACpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD,qBAAa,oBAAqB,SAAQ,oBAAoB,CAAC,aAAa,CAAC;IACtD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI/B,SAAS,IAAI,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAItD,SAAS,CAAC,oBAAoB,CAAC,EAAE,EAAE,aAAa,CAAC,IAAI,CAAC,GAAG,0BAA0B;IAInF,SAAS,CAAC,yBAAyB,CAAC,EAAE,EAAE,aAAa,CAAC,IAAI,CAAC,GAAG,+BAA+B;IAI7F,SAAS,CAAC,eAAe,CAAC,GAAG,EAAE,YAAY,CAAC,aAAa,CAAC,GAAG,aAAa;CAG1E"}
1
+ {"version":3,"file":"test.memory.repository.d.ts","sourceRoot":"","sources":["../../src/tests/test.memory.repository.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,+BAA+B,EAC/B,0BAA0B,EAC1B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACN,YAAY,EACZ,oBAAoB,EACpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD,qBAAa,oBAAqB,SAAQ,oBAAoB,CAAC,aAAa,CAAC;IAC5E,SAAS,CAAC,oBAAoB,CAAC,EAAE,EAAE,aAAa,CAAC,IAAI,CAAC,GAAG,0BAA0B;IAInF,SAAS,CAAC,yBAAyB,CAAC,EAAE,EAAE,aAAa,CAAC,IAAI,CAAC,GAAG,+BAA+B;IAI7F,SAAS,CAAC,eAAe,CAAC,GAAG,EAAE,YAAY,CAAC,aAAa,CAAC,GAAG,aAAa;CAG1E"}
@@ -1,15 +1,8 @@
1
- import { v4 as uuid } from 'uuid';
2
1
  import { BaseMemoryRepository, } from '../repositories/index.js';
3
2
  import { TestAggregate } from './test.aggregate.js';
4
3
  import { TestAlreadyExistsException } from './test.already-exists.exception.js';
5
4
  import { TestNotFoundException } from './test.not-found.exception.js';
6
5
  export class TestMemoryRepository extends BaseMemoryRepository {
7
- async clear() {
8
- this.entitiesMap.clear();
9
- }
10
- async getNextId() {
11
- return uuid();
12
- }
13
6
  getNotFoundException(id) {
14
7
  return new TestNotFoundException(id);
15
8
  }
@@ -1 +1 @@
1
- {"version":3,"file":"test.memory.repository.js","sourceRoot":"","sources":["../../src/tests/test.memory.repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,MAAM,MAAM,CAAC;AAMlC,OAAO,EAEN,oBAAoB,GACpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAEtE,MAAM,OAAO,oBAAqB,SAAQ,oBAAmC;IAC5D,KAAK,CAAC,KAAK;QAC1B,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;IAEM,KAAK,CAAC,SAAS;QACrB,OAAO,IAAI,EAAE,CAAC;IACf,CAAC;IAES,oBAAoB,CAAC,EAAuB;QACrD,OAAO,IAAI,qBAAqB,CAAC,EAAE,CAAC,CAAC;IACtC,CAAC;IAES,yBAAyB,CAAC,EAAuB;QAC1D,OAAO,IAAI,0BAA0B,CAAC,EAAE,CAAC,CAAC;IAC3C,CAAC;IAES,eAAe,CAAC,GAAgC;QACzD,OAAO,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IACjD,CAAC;CACD"}
1
+ {"version":3,"file":"test.memory.repository.js","sourceRoot":"","sources":["../../src/tests/test.memory.repository.ts"],"names":[],"mappings":"AAKA,OAAO,EAEN,oBAAoB,GACpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAEtE,MAAM,OAAO,oBAAqB,SAAQ,oBAAmC;IAClE,oBAAoB,CAAC,EAAuB;QACrD,OAAO,IAAI,qBAAqB,CAAC,EAAE,CAAC,CAAC;IACtC,CAAC;IAES,yBAAyB,CAAC,EAAuB;QAC1D,OAAO,IAAI,0BAA0B,CAAC,EAAE,CAAC,CAAC;IAC3C,CAAC;IAES,eAAe,CAAC,GAAgC;QACzD,OAAO,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IACjD,CAAC;CACD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hg-ts/repository",
3
- "version": "0.5.7",
3
+ "version": "0.5.13",
4
4
  "main": "dist/index.js",
5
5
  "type": "module",
6
6
  "exports": {
@@ -14,17 +14,17 @@
14
14
  "build:dev": "tsc-watch",
15
15
  "lint:ts": "lint-ts",
16
16
  "lint:ts:fix": "lint-ts --fix",
17
- "test": "HG_ENV=test vitest run",
18
- "test:dev": "HG_ENV=test vitest watch"
17
+ "test": "vitest run",
18
+ "test:dev": "vitest watch"
19
19
  },
20
20
  "devDependencies": {
21
- "@hg-ts-config/typescript": "0.5.7",
22
- "@hg-ts/domain": "0.5.7",
23
- "@hg-ts/events": "0.5.7",
24
- "@hg-ts/exception": "0.5.7",
25
- "@hg-ts/linter": "0.5.7",
26
- "@hg-ts/tests": "0.5.7",
27
- "@hg-ts/types": "0.5.7",
21
+ "@hg-ts-config/typescript": "0.5.13",
22
+ "@hg-ts/domain": "0.5.13",
23
+ "@hg-ts/events": "0.5.13",
24
+ "@hg-ts/exception": "0.5.13",
25
+ "@hg-ts/linter": "0.5.13",
26
+ "@hg-ts/tests": "0.5.13",
27
+ "@hg-ts/types": "0.5.13",
28
28
  "@types/node": "22.19.1",
29
29
  "@types/uuid": "10.0.0",
30
30
  "@vitest/coverage-v8": "4.0.14",
@@ -38,9 +38,9 @@
38
38
  "vitest": "4.0.14"
39
39
  },
40
40
  "peerDependencies": {
41
- "@hg-ts/domain": "0.5.7",
42
- "@hg-ts/events": "0.5.7",
43
- "@hg-ts/exception": "0.5.7",
41
+ "@hg-ts/domain": "0.5.13",
42
+ "@hg-ts/events": "0.5.13",
43
+ "@hg-ts/exception": "0.5.13",
44
44
  "reflect-metadata": "*",
45
45
  "tslib": "*",
46
46
  "vitest": "*"
package/vitest.config.mjs DELETED
@@ -1,3 +0,0 @@
1
- import config from '@hg-ts/tests/config';
2
-
3
- export default config;