From a1238ff685ac4877c7c17bfe1a2c1c4b395434e1 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Mon, 14 May 2018 15:08:48 -0400 Subject: [PATCH] delete command --- src/commands/delete.command.ts | 49 ++++++++++++++++++++++++++++++++++ src/program.ts | 9 ++++--- 2 files changed, 54 insertions(+), 4 deletions(-) create mode 100644 src/commands/delete.command.ts diff --git a/src/commands/delete.command.ts b/src/commands/delete.command.ts new file mode 100644 index 0000000000..71c23ff873 --- /dev/null +++ b/src/commands/delete.command.ts @@ -0,0 +1,49 @@ +import * as program from 'commander'; + +import { CipherService } from 'jslib/abstractions/cipher.service'; +import { FolderService } from 'jslib/abstractions/folder.service'; + +import { Response } from '../models/response'; + +export class DeleteCommand { + constructor(private cipherService: CipherService, private folderService: FolderService) { } + + async run(object: string, id: string, cmd: program.Command): Promise { + switch (object) { + case 'item': + return await this.deleteCipher(id); + case 'folder': + return await this.deleteFolder(id); + default: + return Response.badRequest('Unknown object.'); + } + } + + private async deleteCipher(id: string) { + const cipher = await this.cipherService.get(id); + if (cipher == null) { + return Response.notFound(); + } + + try { + await this.cipherService.deleteWithServer(id); + return Response.success(); + } catch (e) { + return Response.error(e.toString()); + } + } + + private async deleteFolder(id: string) { + const folder = await this.folderService.get(id); + if (folder == null) { + return Response.notFound(); + } + + try { + await this.folderService.deleteWithServer(id); + return Response.success(); + } catch (e) { + return Response.error(e.toString()); + } + } +} diff --git a/src/program.ts b/src/program.ts index f132c46829..11d41934fe 100644 --- a/src/program.ts +++ b/src/program.ts @@ -10,6 +10,7 @@ import { Main } from './main'; import { Response } from './models/response'; import { ListResponse } from './models/response/listResponse'; import { StringResponse } from './models/response/stringResponse'; +import { DeleteCommand } from './commands/delete.command'; export class Program { constructor(private main: Main) { } @@ -79,10 +80,10 @@ export class Program { program .command('delete ') .description('Delete an object.') - .action((object, id, cmd) => { - console.log('Deleting...'); - console.log(object); - console.log(id); + .action(async (object, id, cmd) => { + const command = new DeleteCommand(this.main.cipherService, this.main.folderService); + const response = await command.run(object, id, cmd); + this.processResponse(response); }); program