UNPKG

2.12 kBPlain TextView Raw
1import { CreateCRUD } from './CreateCRUD';
2import { DeleteCRUD } from './DeleteCRUD';
3import { DescribeCRUD } from './DescribeCRUD';
4import { GetCRUD } from './GetCRUD';
5import { ResourceType } from './ResourceType';
6import { StartCRUD } from './StartCRUD';
7import { StopCRUD } from './StopCRUD';
8import { BaseResource, BaseResourceOptions } from './types';
9
10export interface CRUDOptions<Resource extends BaseResource, ResourceOptions extends BaseResourceOptions> {
11 readonly resourceType: ResourceType<Resource, ResourceOptions>;
12 readonly start?: StartCRUD<Resource, ResourceOptions> | undefined;
13 readonly stop?: StopCRUD<Resource, ResourceOptions> | undefined;
14 readonly delete?: DeleteCRUD<Resource, ResourceOptions>;
15 readonly create?: CreateCRUD<Resource, ResourceOptions>;
16 readonly get?: GetCRUD<Resource, ResourceOptions>;
17 readonly describe?: DescribeCRUD<Resource, ResourceOptions>;
18}
19
20export class CRUD<Resource extends BaseResource, ResourceOptions extends BaseResourceOptions> {
21 public readonly resourceType: ResourceType<Resource, ResourceOptions>;
22 public readonly start: StartCRUD<Resource, ResourceOptions> | undefined;
23 public readonly stop: StopCRUD<Resource, ResourceOptions> | undefined;
24 public readonly delete: DeleteCRUD<Resource, ResourceOptions>;
25 public readonly create: CreateCRUD<Resource, ResourceOptions>;
26 public readonly get: GetCRUD<Resource, ResourceOptions>;
27 public readonly describe: DescribeCRUD<Resource, ResourceOptions>;
28
29 public constructor({
30 resourceType,
31 start = new StartCRUD({ resourceType, hidden: true }),
32 stop = new StopCRUD({ resourceType, hidden: true }),
33 delete: del = new DeleteCRUD({ resourceType, hidden: true }),
34 create = new CreateCRUD({ resourceType, hidden: true }),
35 get = new GetCRUD({ resourceType, hidden: true }),
36 describe = new DescribeCRUD({ resourceType, hidden: true }),
37 }: CRUDOptions<Resource, ResourceOptions>) {
38 this.resourceType = resourceType;
39 this.start = start;
40 this.stop = stop;
41 this.delete = del;
42 this.create = create;
43 this.get = get;
44 this.describe = describe;
45 }
46}