Skip to content
This repository was archived by the owner on Jun 22, 2021. It is now read-only.

Commit 872baed

Browse files
committed
feat(package): Adds required types, interfaces, and classes.
1 parent 9b737b1 commit 872baed

17 files changed

+193
-1
lines changed

package-lock.json

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@
2121
"lines": 100,
2222
"check-coverage": true
2323
},
24-
"dependencies": {},
24+
"dependencies": {
25+
"make-error": "^1.3.0"
26+
},
2527
"devDependencies": {
2628
"@ht2-labs/typescript-project": "1.0.0",
2729
"@ht2-labs/semantic-release": "1.0.9",

src/Facade.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import CountEntities from './signatures/CountEntities';
2+
import CreateEntity from './signatures/CreateEntity';
3+
import GetEntities from './signatures/GetEntities';
4+
import GetEntity from './signatures/GetEntity';
5+
import OverwriteEntity from './signatures/OverwriteEntity';
6+
import PatchEntity from './signatures/PatchEntity';
7+
import RemoveEntities from './signatures/RemoveEntities';
8+
import RemoveEntity from './signatures/RemoveEntity';
9+
10+
export default interface Facade<Id, Entity> {
11+
readonly getEntity: GetEntity<Id, Entity>;
12+
readonly createEntity: CreateEntity<Entity>;
13+
readonly overwriteEntity: OverwriteEntity<Id, Entity>;
14+
readonly patchEntity: PatchEntity<Id, Entity>;
15+
readonly removeEntity: RemoveEntity<Id>;
16+
readonly getEntities: GetEntities<Entity>;
17+
readonly countEntities: CountEntities<Entity>;
18+
readonly removeEntities: RemoveEntities<Entity>;
19+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
// tslint:disable:no-class
2+
import { BaseError } from 'make-error';
3+
4+
export default class ConflictingEntityError<Id> extends BaseError {
5+
constructor(public entityName: string, public entityId: Id) {
6+
super();
7+
}
8+
}

src/errors/MissingEntityError.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
// tslint:disable:no-class
2+
import { BaseError } from 'make-error';
3+
4+
export default class MissingEntityError<Id> extends BaseError {
5+
constructor(public entityName: string, public entityId: Id) {
6+
super();
7+
}
8+
}

src/signatures/CountEntities.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import Filter from '../types/Filter';
2+
3+
export interface Opts<Entity> {
4+
readonly filter: Filter<Entity>;
5+
}
6+
7+
export interface Result {
8+
readonly count: number;
9+
}
10+
11+
export type Signature<Entity> = (opts: Opts<Entity>) => Promise<Result>;
12+
13+
export default Signature;

src/signatures/CreateEntity.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
export interface Opts<Entity> {
2+
readonly entity: Entity;
3+
}
4+
5+
export interface Result<Entity> {
6+
readonly entity: Entity;
7+
}
8+
9+
export type Signature<Entity> = (opts: Opts<Entity>) => Promise<Result<Entity>>;
10+
11+
export default Signature;

src/signatures/GetEntities.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import Cursor from '../types/Cursor';
2+
import Filter from '../types/Filter';
3+
import Pagination from '../types/Pagination';
4+
import Sort from '../types/Sort';
5+
6+
export interface Opts<Entity> {
7+
readonly filter: Filter<Entity>;
8+
readonly sort: Sort<Entity>;
9+
readonly pagination: Pagination;
10+
}
11+
12+
export interface Result<Entity> {
13+
readonly entities: Entity[];
14+
readonly nextCursor: Cursor;
15+
readonly previousCursor: Cursor;
16+
}
17+
18+
export type Signature<Entity> = (opts: Opts<Entity>) => Promise<Result<Entity>>;
19+
20+
export default Signature;

src/signatures/GetEntity.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
export interface Opts<Id> {
2+
readonly id: Id;
3+
}
4+
5+
export interface Result<Entity> {
6+
readonly entity: Entity;
7+
}
8+
9+
export type Signature<Id, Entity> = (opts: Opts<Id>) => Promise<Result<Entity>>;
10+
11+
export default Signature;

src/signatures/OverwriteEntity.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
export interface Opts<Id, Entity> {
2+
readonly id: Id;
3+
readonly entity: Entity;
4+
}
5+
6+
export interface Result<Entity> {
7+
readonly entity: Entity;
8+
}
9+
10+
export type Signature<Id, Entity> = (opts: Opts<Id, Entity>) => Promise<Result<Entity>>;
11+
12+
export default Signature;

0 commit comments

Comments
 (0)