UNPKG

1.49 kBPlain TextView Raw
1import { Observable } from 'rxjs';
2import { CLIOption } from './CRUDBase';
3import { CRUDResource, Request$Options } from './CRUDResource';
4import { ResourceType } from './ResourceType';
5import { BaseResource, BaseResourceOptions, ExecuteTaskListResponse } from './types';
6
7export interface DeleteCRUDOptions<Resource extends BaseResource, ResourceOptions extends BaseResourceOptions> {
8 readonly resourceType: ResourceType<Resource, ResourceOptions>;
9 readonly help?: string;
10 readonly aliases?: ReadonlyArray<string>;
11 readonly options?: ReadonlyArray<CLIOption>;
12 readonly autocomplete?: ReadonlyArray<string>;
13 readonly hidden?: boolean;
14}
15
16export class DeleteCRUD<
17 Resource extends BaseResource,
18 ResourceOptions extends BaseResourceOptions
19> extends CRUDResource<Resource, ResourceOptions> {
20 public constructor({
21 resourceType,
22 help = `Deletes the ${resourceType.names.lower} called <name>`,
23 aliases,
24 options,
25 autocomplete,
26 hidden,
27 }: DeleteCRUDOptions<Resource, ResourceOptions>) {
28 super({
29 name: 'delete',
30 resourceType,
31 help,
32 aliases,
33 options,
34 autocomplete,
35 hidden,
36 });
37 }
38
39 public request$({
40 name,
41 cancel$,
42 options,
43 client,
44 }: Request$Options<ResourceOptions>): Observable<ExecuteTaskListResponse> {
45 return client.deleteResource$({
46 plugin: this.resourceType.plugin.name,
47 resourceType: this.resourceType.name,
48 name,
49 options,
50 cancel$,
51 });
52 }
53}