@hg-ts/repository 0.4.4 → 0.5.1
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/exceptions/aggregate.already-exists.exception.d.ts +1 -1
- package/dist/exceptions/aggregate.already-exists.exception.d.ts.map +1 -1
- package/dist/exceptions/aggregate.already-exists.exception.js.map +1 -1
- package/dist/exceptions/aggregate.not-found.exception.d.ts +1 -1
- package/dist/exceptions/aggregate.not-found.exception.d.ts.map +1 -1
- package/dist/exceptions/aggregate.not-found.exception.js.map +1 -1
- package/dist/repositories/base.event.repository.d.ts +3 -2
- package/dist/repositories/base.event.repository.d.ts.map +1 -1
- package/dist/repositories/base.event.repository.js +5 -2
- package/dist/repositories/base.event.repository.js.map +1 -1
- package/dist/repositories/base.memory.repository.d.ts +7 -7
- package/dist/repositories/base.memory.repository.d.ts.map +1 -1
- package/dist/repositories/base.memory.repository.js +11 -26
- package/dist/repositories/base.memory.repository.js.map +1 -1
- package/dist/repositories/base.repository.d.ts +12 -6
- package/dist/repositories/base.repository.d.ts.map +1 -1
- package/dist/repositories/base.repository.js +43 -0
- package/dist/repositories/base.repository.js.map +1 -1
- package/dist/repositories/repository.d.ts +2 -1
- package/dist/repositories/repository.d.ts.map +1 -1
- package/dist/repositories/repository.js.map +1 -1
- package/dist/tests/test.aggregate.d.ts +8 -2
- package/dist/tests/test.aggregate.d.ts.map +1 -1
- package/dist/tests/test.aggregate.js +5 -1
- package/dist/tests/test.aggregate.js.map +1 -1
- package/dist/tests/test.memory.repository.d.ts +4 -2
- package/dist/tests/test.memory.repository.d.ts.map +1 -1
- package/dist/tests/test.memory.repository.js +8 -1
- package/dist/tests/test.memory.repository.js.map +1 -1
- package/package.json +11 -11
|
@@ -5,6 +5,6 @@ export type AggregateAlreadyExistsParams<IdType = unknown> = {
|
|
|
5
5
|
};
|
|
6
6
|
export declare abstract class AggregateAlreadyExistsException<IdType = unknown> extends BaseException {
|
|
7
7
|
readonly id?: IdType;
|
|
8
|
-
|
|
8
|
+
constructor(aggregateName: string, params?: AggregateAlreadyExistsParams<IdType>);
|
|
9
9
|
}
|
|
10
10
|
//# sourceMappingURL=aggregate.already-exists.exception.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregate.already-exists.exception.d.ts","sourceRoot":"","sources":["../../src/exceptions/aggregate.already-exists.exception.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGjD,MAAM,MAAM,4BAA4B,CAAC,MAAM,GAAG,OAAO,IAAI;IAC5D,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;CACd,CAAA;AAED,8BAAsB,+BAA+B,CAAC,MAAM,GAAG,OAAO,CAAE,SAAQ,aAAa;IAC5F,SAAgB,EAAE,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"aggregate.already-exists.exception.d.ts","sourceRoot":"","sources":["../../src/exceptions/aggregate.already-exists.exception.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGjD,MAAM,MAAM,4BAA4B,CAAC,MAAM,GAAG,OAAO,IAAI;IAC5D,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;CACd,CAAA;AAED,8BAAsB,+BAA+B,CAAC,MAAM,GAAG,OAAO,CAAE,SAAQ,aAAa;IAC5F,SAAgB,EAAE,CAAC,EAAE,MAAM,CAAC;gBAET,aAAa,EAAE,MAAM,EAAE,MAAM,GAAE,4BAA4B,CAAC,MAAM,CAAM;CAiB3F"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregate.already-exists.exception.js","sourceRoot":"","sources":["../../src/exceptions/aggregate.already-exists.exception.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAO9B,MAAM,OAAgB,+BAAkD,SAAQ,aAAa;IAC5E,EAAE,CAAU;IAE5B,
|
|
1
|
+
{"version":3,"file":"aggregate.already-exists.exception.js","sourceRoot":"","sources":["../../src/exceptions/aggregate.already-exists.exception.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAO9B,MAAM,OAAgB,+BAAkD,SAAQ,aAAa;IAC5E,EAAE,CAAU;IAE5B,YAAmB,aAAqB,EAAE,SAA+C,EAAE;QAC1F,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,MAAM,CAAC;QAC5B,MAAM,YAAY,GAAG,CAAC,aAAa,CAAC,CAAC;QAErC,IAAI,EAAE,EAAE,CAAC;YACR,YAAY,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC5C,CAAC;QAED,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAEpC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAGxC,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;YACtB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACd,CAAC;IACF,CAAC;CACD"}
|
|
@@ -5,6 +5,6 @@ export type AggregateNotFoundParams<IdType = unknown> = {
|
|
|
5
5
|
};
|
|
6
6
|
export declare abstract class AggregateNotFoundException<IdType = unknown> extends BaseException {
|
|
7
7
|
readonly id?: IdType;
|
|
8
|
-
|
|
8
|
+
constructor(aggregateName: string, params?: AggregateNotFoundParams<IdType>);
|
|
9
9
|
}
|
|
10
10
|
//# sourceMappingURL=aggregate.not-found.exception.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregate.not-found.exception.d.ts","sourceRoot":"","sources":["../../src/exceptions/aggregate.not-found.exception.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGjD,MAAM,MAAM,uBAAuB,CAAC,MAAM,GAAG,OAAO,IAAI;IACvD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;CACd,CAAA;AAED,8BAAsB,0BAA0B,CAAC,MAAM,GAAG,OAAO,CAAE,SAAQ,aAAa;IACvF,SAAgB,EAAE,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"aggregate.not-found.exception.d.ts","sourceRoot":"","sources":["../../src/exceptions/aggregate.not-found.exception.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGjD,MAAM,MAAM,uBAAuB,CAAC,MAAM,GAAG,OAAO,IAAI;IACvD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;CACd,CAAA;AAED,8BAAsB,0BAA0B,CAAC,MAAM,GAAG,OAAO,CAAE,SAAQ,aAAa;IACvF,SAAgB,EAAE,CAAC,EAAE,MAAM,CAAC;gBAET,aAAa,EAAE,MAAM,EAAE,MAAM,GAAE,uBAAuB,CAAC,MAAM,CAAM;CAiBtF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregate.not-found.exception.js","sourceRoot":"","sources":["../../src/exceptions/aggregate.not-found.exception.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAO9B,MAAM,OAAgB,0BAA6C,SAAQ,aAAa;IACvE,EAAE,CAAU;IAE5B,
|
|
1
|
+
{"version":3,"file":"aggregate.not-found.exception.js","sourceRoot":"","sources":["../../src/exceptions/aggregate.not-found.exception.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAO9B,MAAM,OAAgB,0BAA6C,SAAQ,aAAa;IACvE,EAAE,CAAU;IAE5B,YAAmB,aAAqB,EAAE,SAA0C,EAAE;QACrF,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,MAAM,CAAC;QAC5B,MAAM,YAAY,GAAG,CAAC,aAAa,CAAC,CAAC;QAErC,IAAI,EAAE,EAAE,CAAC;YACR,YAAY,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC5C,CAAC;QAED,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE/B,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAGxC,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;YACtB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACd,CAAC;IACF,CAAC;CACD"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import { DomainEvent } from '@hg-ts/domain';
|
|
1
|
+
import { DomainEvent, DomainEventDto } from '@hg-ts/domain';
|
|
2
2
|
import { AggregateAlreadyExistsException, AggregateNotFoundException } from '../exceptions/index.js';
|
|
3
|
-
import { BaseRepository } from './base.repository.js';
|
|
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
6
|
getNextId(): Promise<string>;
|
|
7
7
|
update(_entity: DomainEvent | DomainEvent[]): Promise<void>;
|
|
8
8
|
delete(_entity: DomainEvent | DomainEvent[]): Promise<void>;
|
|
9
9
|
clear(): Promise<void>;
|
|
10
|
+
protected rawUpdate(_dtos: NotEmptyList<DomainEventDto>): Promise<void>;
|
|
10
11
|
protected getNotFoundException(id: string): AggregateNotFoundException;
|
|
11
12
|
protected getAlreadyExistsException(id: string): AggregateAlreadyExistsException;
|
|
12
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.event.repository.d.ts","sourceRoot":"","sources":["../../src/repositories/base.event.repository.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
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,6 +1,6 @@
|
|
|
1
|
-
import { DomainEvent } from '@hg-ts/domain';
|
|
1
|
+
import { DomainEvent, } from '@hg-ts/domain';
|
|
2
2
|
import { AggregateEventAlreadyExistsException, AggregateEventDeleteRestrictedException, AggregateEventNotFoundException, AggregateEventUpdateRestrictedException, } from '../exceptions/index.js';
|
|
3
|
-
import { BaseRepository } from './base.repository.js';
|
|
3
|
+
import { BaseRepository, } from './base.repository.js';
|
|
4
4
|
export class BaseEventRepository extends BaseRepository {
|
|
5
5
|
async getNextId() {
|
|
6
6
|
return DomainEvent.generateId();
|
|
@@ -14,6 +14,9 @@ export class BaseEventRepository extends BaseRepository {
|
|
|
14
14
|
async clear() {
|
|
15
15
|
throw new AggregateEventDeleteRestrictedException();
|
|
16
16
|
}
|
|
17
|
+
async rawUpdate(_dtos) {
|
|
18
|
+
throw new AggregateEventUpdateRestrictedException();
|
|
19
|
+
}
|
|
17
20
|
getNotFoundException(id) {
|
|
18
21
|
throw new AggregateEventNotFoundException(id);
|
|
19
22
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.event.repository.js","sourceRoot":"","sources":["../../src/repositories/base.event.repository.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
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,13 +1,13 @@
|
|
|
1
1
|
import type { BaseAggregate } from '@hg-ts/domain';
|
|
2
|
-
import { BaseRepository } from './base.repository.js';
|
|
3
|
-
import type { AggregateId, BaseFindOptions } from './repository.js';
|
|
4
|
-
export declare abstract class BaseMemoryRepository<Aggregate extends BaseAggregate<any>, FindOptions extends BaseFindOptions<Aggregate> = BaseFindOptions<Aggregate>> extends BaseRepository<Aggregate, FindOptions> {
|
|
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
5
|
protected lastId: Nullable<AggregateId<Aggregate>>;
|
|
6
|
-
protected readonly entitiesMap: Map<AggregateId<Aggregate>, Aggregate
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
protected readonly entitiesMap: Map<AggregateId<Aggregate>, AggregateDto<Aggregate>>;
|
|
7
|
+
rawAdd(dtos: NotEmptyList<AggregateDto<Aggregate>>): Promise<void>;
|
|
8
|
+
rawUpdate(dtos: NotEmptyList<AggregateDto<Aggregate>>): Promise<void>;
|
|
9
9
|
delete(aggregate: Aggregate | Aggregate[]): Promise<void>;
|
|
10
|
-
clear(): Promise<void>;
|
|
11
10
|
protected findEntities(options: FindOptions): Promise<Aggregate[]>;
|
|
11
|
+
protected abstract createAggregate(dto: AggregateDto<Aggregate>): Aggregate;
|
|
12
12
|
}
|
|
13
13
|
//# sourceMappingURL=base.memory.repository.d.ts.map
|
|
@@ -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,
|
|
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,IAAI,EAAE,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAMlE,SAAS,CAAC,IAAI,EAAE,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAM5D,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,4 +1,4 @@
|
|
|
1
|
-
import { BaseRepository } from './base.repository.js';
|
|
1
|
+
import { BaseRepository, } from './base.repository.js';
|
|
2
2
|
function clone(aggregate) {
|
|
3
3
|
const aggregatePrototype = Object.getPrototypeOf(aggregate);
|
|
4
4
|
const result = Object.create(aggregatePrototype);
|
|
@@ -8,26 +8,14 @@ function clone(aggregate) {
|
|
|
8
8
|
export class BaseMemoryRepository extends BaseRepository {
|
|
9
9
|
lastId = null;
|
|
10
10
|
entitiesMap = new Map();
|
|
11
|
-
async
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}
|
|
15
|
-
else {
|
|
16
|
-
if (this.entitiesMap.has(aggregate.id)) {
|
|
17
|
-
throw this.getAlreadyExistsException(aggregate.id);
|
|
18
|
-
}
|
|
19
|
-
this.entitiesMap.set(aggregate.id, clone(aggregate));
|
|
11
|
+
async rawAdd(dtos) {
|
|
12
|
+
for (const dto of dtos) {
|
|
13
|
+
this.entitiesMap.set(dto.id, clone(dto));
|
|
20
14
|
}
|
|
21
15
|
}
|
|
22
|
-
async
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
}
|
|
26
|
-
else {
|
|
27
|
-
if (!this.entitiesMap.has(aggregate.id)) {
|
|
28
|
-
throw this.getNotFoundException(aggregate.id);
|
|
29
|
-
}
|
|
30
|
-
this.entitiesMap.set(aggregate.id, clone(aggregate));
|
|
16
|
+
async rawUpdate(dtos) {
|
|
17
|
+
for (const dto of dtos) {
|
|
18
|
+
this.entitiesMap.set(dto.id, clone(dto));
|
|
31
19
|
}
|
|
32
20
|
}
|
|
33
21
|
async delete(aggregate) {
|
|
@@ -35,23 +23,20 @@ export class BaseMemoryRepository extends BaseRepository {
|
|
|
35
23
|
await Promise.all(aggregate.map(async (aggregate) => this.delete(aggregate)));
|
|
36
24
|
}
|
|
37
25
|
else {
|
|
38
|
-
this.entitiesMap.delete(aggregate
|
|
26
|
+
this.entitiesMap.delete(aggregate.id);
|
|
39
27
|
}
|
|
40
28
|
}
|
|
41
|
-
async clear() {
|
|
42
|
-
this.entitiesMap.clear();
|
|
43
|
-
}
|
|
44
29
|
async findEntities(options) {
|
|
45
30
|
const { id } = options;
|
|
46
31
|
if (Array.isArray(id)) {
|
|
47
32
|
return id.filter(id => this.entitiesMap.has(id))
|
|
48
|
-
.map(id => this.entitiesMap.get(id));
|
|
33
|
+
.map(id => this.entitiesMap.get(id)).map(dto => this.createAggregate(dto));
|
|
49
34
|
}
|
|
50
35
|
if (typeof id !== 'undefined') {
|
|
51
36
|
const item = this.entitiesMap.get(id);
|
|
52
|
-
return item ? [item] : [];
|
|
37
|
+
return item ? [this.createAggregate(item)] : [];
|
|
53
38
|
}
|
|
54
|
-
return [...this.entitiesMap.values()];
|
|
39
|
+
return [...this.entitiesMap.values()].map(dto => this.createAggregate(dto));
|
|
55
40
|
}
|
|
56
41
|
}
|
|
57
42
|
//# sourceMappingURL=base.memory.repository.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.memory.repository.js","sourceRoot":"","sources":["../../src/repositories/base.memory.repository.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
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,IAA2C;QAC9D,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACxB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1C,CAAC;IACF,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,IAA2C;QACjE,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACxB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1C,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,18 +1,24 @@
|
|
|
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';
|
|
4
|
-
type
|
|
5
|
-
export type InternalData = {
|
|
6
|
-
updatedKeys: Set<KeyType>;
|
|
7
|
-
};
|
|
3
|
+
import { AggregateDto, AggregateId, BaseFindOptions, Repository } from './repository.js';
|
|
4
|
+
export type NotEmptyList<T> = [T, ...T[]];
|
|
8
5
|
export declare abstract class BaseRepository<Aggregate extends (BaseAggregate<any> | DomainEvent), FindOptions extends BaseFindOptions<Aggregate> = BaseFindOptions<Aggregate>> extends Repository<Aggregate, FindOptions> {
|
|
9
6
|
get(id: AggregateId<Aggregate>): Promise<Nullable<Aggregate>>;
|
|
10
7
|
getOrFail(id: AggregateId<Aggregate>): Promise<Aggregate>;
|
|
11
8
|
has(id: AggregateId<Aggregate>): Promise<boolean>;
|
|
12
9
|
find(options?: Partial<FindOptions>): Promise<Aggregate[]>;
|
|
10
|
+
add(entities: Aggregate[] | Aggregate): Promise<void>;
|
|
11
|
+
update(entities: Aggregate[] | Aggregate): Promise<void>;
|
|
12
|
+
clear(): Promise<void>;
|
|
13
|
+
delete(_entities: Aggregate[] | Aggregate): Promise<void>;
|
|
14
|
+
protected onEmptyAdd(): void;
|
|
15
|
+
protected onEmptyUpdate(): void;
|
|
16
|
+
protected getDto(aggregate: Aggregate): AggregateDto<Aggregate>;
|
|
17
|
+
protected getId(aggregate: Aggregate): AggregateId<Aggregate>;
|
|
13
18
|
protected abstract findEntities(options?: Partial<FindOptions>): Promise<Aggregate[]>;
|
|
19
|
+
protected abstract rawAdd(dtos: NotEmptyList<AggregateDto<Aggregate>>): Promise<void>;
|
|
20
|
+
protected abstract rawUpdate(dtos: NotEmptyList<AggregateDto<Aggregate>>): Promise<void>;
|
|
14
21
|
protected abstract getNotFoundException(id: AggregateId<Aggregate>): AggregateNotFoundException;
|
|
15
22
|
protected abstract getAlreadyExistsException(id: AggregateId<Aggregate>): AggregateAlreadyExistsException;
|
|
16
23
|
}
|
|
17
|
-
export {};
|
|
18
24
|
//# 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;
|
|
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,YAAY,EACZ,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,QAAQ,EAAE,SAAS,EAAE,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBrD,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBxD,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;IAC/B,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC;IAG/D,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,YAAY,CAAC,SAAS,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IACrF,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAExF,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,3 +1,4 @@
|
|
|
1
|
+
import { WillNeverHappenedException } from '@hg-ts/exception';
|
|
1
2
|
import { Repository, } from './repository.js';
|
|
2
3
|
export class BaseRepository extends Repository {
|
|
3
4
|
async get(id) {
|
|
@@ -19,5 +20,47 @@ export class BaseRepository extends Repository {
|
|
|
19
20
|
const entities = await this.findEntities(options);
|
|
20
21
|
return entities;
|
|
21
22
|
}
|
|
23
|
+
async add(entities) {
|
|
24
|
+
const dtos = Array.isArray(entities) ? entities.map(entity => this.getDto(entity)) : [this.getDto(entities)];
|
|
25
|
+
if (dtos.length === 0) {
|
|
26
|
+
this.onEmptyAdd();
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
const ids = dtos.map(dto => dto.id);
|
|
30
|
+
const existEntities = await this.find({ id: ids });
|
|
31
|
+
if (existEntities.length > 0 && existEntities[0]) {
|
|
32
|
+
throw this.getAlreadyExistsException(this.getId(existEntities[0]));
|
|
33
|
+
}
|
|
34
|
+
await this.rawAdd(dtos);
|
|
35
|
+
}
|
|
36
|
+
async update(entities) {
|
|
37
|
+
const dtos = Array.isArray(entities)
|
|
38
|
+
? entities.map(entity => this.getDto(entity))
|
|
39
|
+
: [this.getDto(entities)];
|
|
40
|
+
if (dtos.length === 0) {
|
|
41
|
+
this.onEmptyUpdate();
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
const ids = dtos.map(dto => dto.id);
|
|
45
|
+
const existEntities = await this.find({ id: ids });
|
|
46
|
+
if (existEntities.length < dtos.length && dtos[0]) {
|
|
47
|
+
throw this.getNotFoundException(existEntities[0]?.id ?? dtos[0].id);
|
|
48
|
+
}
|
|
49
|
+
await this.rawUpdate(dtos);
|
|
50
|
+
}
|
|
51
|
+
async clear() {
|
|
52
|
+
throw new WillNeverHappenedException('The clean method is not implemented, so cleaning the repository is not allowed.');
|
|
53
|
+
}
|
|
54
|
+
async delete(_entities) {
|
|
55
|
+
throw new WillNeverHappenedException('The delete method is not implemented, so deleting entities is not allowed.');
|
|
56
|
+
}
|
|
57
|
+
onEmptyAdd() { }
|
|
58
|
+
onEmptyUpdate() { }
|
|
59
|
+
getDto(aggregate) {
|
|
60
|
+
return aggregate.toDto();
|
|
61
|
+
}
|
|
62
|
+
getId(aggregate) {
|
|
63
|
+
return aggregate.id;
|
|
64
|
+
}
|
|
22
65
|
}
|
|
23
66
|
//# sourceMappingURL=base.repository.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.repository.js","sourceRoot":"","sources":["../../src/repositories/base.repository.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"base.repository.js","sourceRoot":"","sources":["../../src/repositories/base.repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { BaseAggregate, DomainEvent, Identifiable } from '@hg-ts/domain';
|
|
2
|
-
export type AggregateId<Aggregate extends BaseAggregate<any> | DomainEvent> = Aggregate extends Identifiable<infer
|
|
2
|
+
export type AggregateId<Aggregate extends BaseAggregate<any> | DomainEvent> = Aggregate extends Identifiable<infer IdType> ? IdType : never;
|
|
3
|
+
export type AggregateDto<Aggregate extends BaseAggregate<any> | DomainEvent> = ReturnType<Aggregate['toDto']>;
|
|
3
4
|
export type BaseFindOptions<Aggregate extends BaseAggregate<any> | DomainEvent> = {
|
|
4
5
|
id?: AggregateId<Aggregate> | AggregateId<Aggregate>[];
|
|
5
6
|
};
|
|
@@ -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,
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../../src/repositories/repository.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../../src/repositories/repository.ts"],"names":[],"mappings":"AAkBA,MAAM,OAAgB,UAAU;CAmB/B"}
|
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
import { BaseAggregate } from '@hg-ts/domain';
|
|
2
|
-
|
|
2
|
+
type TestAggregateDto = {
|
|
3
|
+
id: string;
|
|
3
4
|
someField: Nullable<string>;
|
|
4
|
-
|
|
5
|
+
};
|
|
6
|
+
export declare class TestAggregate extends BaseAggregate<TestAggregateDto> {
|
|
7
|
+
someField: Nullable<string>;
|
|
8
|
+
constructor(id: string, someField?: Nullable<string>);
|
|
5
9
|
setSomeField(value: Nullable<string>): void;
|
|
10
|
+
toDto(): TestAggregateDto;
|
|
6
11
|
}
|
|
12
|
+
export {};
|
|
7
13
|
//# sourceMappingURL=test.aggregate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.aggregate.d.ts","sourceRoot":"","sources":["../../src/tests/test.aggregate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,qBAAa,aAAc,SAAQ,aAAa;
|
|
1
|
+
{"version":3,"file":"test.aggregate.d.ts","sourceRoot":"","sources":["../../src/tests/test.aggregate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,KAAK,gBAAgB,GAAG;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;CAC5B,CAAC;AAEF,qBAAa,aAAc,SAAQ,aAAa,CAAC,gBAAgB,CAAC;IAC1D,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAQ;gBAEvB,EAAE,EAAE,MAAM,EAAE,SAAS,GAAE,QAAQ,CAAC,MAAM,CAAQ;IAM1D,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI;IAI3C,KAAK,IAAI,gBAAgB;CAGhC"}
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
import { BaseAggregate } from '@hg-ts/domain';
|
|
2
2
|
export class TestAggregate extends BaseAggregate {
|
|
3
3
|
someField = null;
|
|
4
|
-
constructor(id) {
|
|
4
|
+
constructor(id, someField = null) {
|
|
5
5
|
super({ id });
|
|
6
|
+
this.someField = someField;
|
|
6
7
|
}
|
|
7
8
|
setSomeField(value) {
|
|
8
9
|
this.someField = value;
|
|
9
10
|
}
|
|
11
|
+
toDto() {
|
|
12
|
+
return { id: this.id, someField: this.someField };
|
|
13
|
+
}
|
|
10
14
|
}
|
|
11
15
|
//# sourceMappingURL=test.aggregate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.aggregate.js","sourceRoot":"","sources":["../../src/tests/test.aggregate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"test.aggregate.js","sourceRoot":"","sources":["../../src/tests/test.aggregate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAO9C,MAAM,OAAO,aAAc,SAAQ,aAA+B;IAC1D,SAAS,GAAqB,IAAI,CAAC;IAE1C,YAAmB,EAAU,EAAE,YAA8B,IAAI;QAChE,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAEd,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC5B,CAAC;IAEM,YAAY,CAAC,KAAuB;QAC1C,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACxB,CAAC;IAEM,KAAK;QACX,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IACnD,CAAC;CACD"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { AggregateAlreadyExistsException, AggregateNotFoundException } from '../exceptions/index.js';
|
|
2
|
-
import { BaseMemoryRepository } from '../repositories/index.js';
|
|
3
|
-
import
|
|
2
|
+
import { AggregateDto, BaseMemoryRepository } from '../repositories/index.js';
|
|
3
|
+
import { TestAggregate } from './test.aggregate.js';
|
|
4
4
|
export declare class TestMemoryRepository extends BaseMemoryRepository<TestAggregate> {
|
|
5
|
+
clear(): Promise<void>;
|
|
5
6
|
getNextId(): Promise<TestAggregate['id']>;
|
|
6
7
|
protected getNotFoundException(id: TestAggregate['id']): AggregateNotFoundException;
|
|
7
8
|
protected getAlreadyExistsException(id: TestAggregate['id']): AggregateAlreadyExistsException;
|
|
9
|
+
protected createAggregate(dto: AggregateDto<TestAggregate>): TestAggregate;
|
|
8
10
|
}
|
|
9
11
|
//# sourceMappingURL=test.memory.repository.d.ts.map
|
|
@@ -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,
|
|
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,8 +1,12 @@
|
|
|
1
1
|
import { v4 as uuid } from 'uuid';
|
|
2
|
-
import { BaseMemoryRepository } from '../repositories/index.js';
|
|
2
|
+
import { BaseMemoryRepository, } from '../repositories/index.js';
|
|
3
|
+
import { TestAggregate } from './test.aggregate.js';
|
|
3
4
|
import { TestAlreadyExistsException } from './test.already-exists.exception.js';
|
|
4
5
|
import { TestNotFoundException } from './test.not-found.exception.js';
|
|
5
6
|
export class TestMemoryRepository extends BaseMemoryRepository {
|
|
7
|
+
async clear() {
|
|
8
|
+
this.entitiesMap.clear();
|
|
9
|
+
}
|
|
6
10
|
async getNextId() {
|
|
7
11
|
return uuid();
|
|
8
12
|
}
|
|
@@ -12,5 +16,8 @@ export class TestMemoryRepository extends BaseMemoryRepository {
|
|
|
12
16
|
getAlreadyExistsException(id) {
|
|
13
17
|
return new TestAlreadyExistsException(id);
|
|
14
18
|
}
|
|
19
|
+
createAggregate(dto) {
|
|
20
|
+
return new TestAggregate(dto.id, dto.someField);
|
|
21
|
+
}
|
|
15
22
|
}
|
|
16
23
|
//# sourceMappingURL=test.memory.repository.js.map
|
|
@@ -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,
|
|
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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hg-ts/repository",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.1",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -18,13 +18,13 @@
|
|
|
18
18
|
"test:dev": "HG_ENV=test vitest watch"
|
|
19
19
|
},
|
|
20
20
|
"devDependencies": {
|
|
21
|
-
"@hg-ts-config/typescript": "0.
|
|
22
|
-
"@hg-ts/domain": "0.
|
|
23
|
-
"@hg-ts/events": "0.
|
|
24
|
-
"@hg-ts/exception": "0.
|
|
25
|
-
"@hg-ts/linter": "0.
|
|
26
|
-
"@hg-ts/tests": "0.
|
|
27
|
-
"@hg-ts/types": "0.
|
|
21
|
+
"@hg-ts-config/typescript": "0.5.1",
|
|
22
|
+
"@hg-ts/domain": "0.5.1",
|
|
23
|
+
"@hg-ts/events": "0.5.1",
|
|
24
|
+
"@hg-ts/exception": "0.5.1",
|
|
25
|
+
"@hg-ts/linter": "0.5.1",
|
|
26
|
+
"@hg-ts/tests": "0.5.1",
|
|
27
|
+
"@hg-ts/types": "0.5.1",
|
|
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.
|
|
42
|
-
"@hg-ts/events": "0.
|
|
43
|
-
"@hg-ts/exception": "0.
|
|
41
|
+
"@hg-ts/domain": "0.5.1",
|
|
42
|
+
"@hg-ts/events": "0.5.1",
|
|
43
|
+
"@hg-ts/exception": "0.5.1",
|
|
44
44
|
"reflect-metadata": "*",
|
|
45
45
|
"tslib": "*",
|
|
46
46
|
"vitest": "*"
|