Skip to content

Commit 9c0e069

Browse files
committed
feat(repository): added support for the transaction pattern
1 parent cedc0ee commit 9c0e069

File tree

2 files changed

+16
-18
lines changed

2 files changed

+16
-18
lines changed
Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { Transaction } from './transaction';
12
import { UnitOfWork } from './unit-of-work';
23

34
// TODO:
@@ -13,16 +14,14 @@ import { UnitOfWork } from './unit-of-work';
1314
* Persistence oriented repository that provides an abstraction layer between the domain and data mapping layers.
1415
* Acts like an in-memory domain object collection.
1516
*/
16-
export abstract class Repository<Entity, Identity> {
17+
export abstract class Repository<
18+
Entity,
19+
Identity,
20+
Context extends UnitOfWork | Transaction = UnitOfWork | Transaction
21+
> {
1722
public abstract getById(anIdentity: Identity): Promise<Entity | null>;
1823

19-
public abstract save(
20-
anObject: Entity,
21-
aUnitOfWork?: UnitOfWork
22-
): Promise<Entity>;
24+
public abstract save(anObject: Entity, context?: Context): Promise<Entity>;
2325

24-
public abstract delete(
25-
anObject: Entity,
26-
aUnitOfWork?: UnitOfWork
27-
): Promise<Entity>;
26+
public abstract delete(anObject: Entity, context?: Context): Promise<Entity>;
2827
}
Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { Transaction } from './transaction';
12
import { UnitOfWork } from './unit-of-work';
23

34
// TODO:
@@ -13,16 +14,14 @@ import { UnitOfWork } from './unit-of-work';
1314
* Persistence oriented repository that provides an abstraction layer between the domain and data mapping layers.
1415
* Acts like an in-memory domain object collection.
1516
*/
16-
export abstract class Repository<Entity, Identity> {
17+
export abstract class Repository<
18+
Entity,
19+
Identity,
20+
Context extends UnitOfWork | Transaction = UnitOfWork | Transaction
21+
> {
1722
public abstract getById(anIdentity: Identity): Promise<Entity | null>;
1823

19-
public abstract save(
20-
anObject: Entity,
21-
aUnitOfWork?: UnitOfWork
22-
): Promise<Entity>;
24+
public abstract save(anObject: Entity, context?: Context): Promise<Entity>;
2325

24-
public abstract delete(
25-
anObject: Entity,
26-
aUnitOfWork?: UnitOfWork
27-
): Promise<Entity>;
26+
public abstract delete(anObject: Entity, context?: Context): Promise<Entity>;
2827
}

0 commit comments

Comments
 (0)