A social knowledge tool for researchers built on ATProto
at development 1.2 kB view raw
1import { Controller } from '../../../../../shared/infrastructure/http/Controller'; 2import { Response } from 'express'; 3import { RemoveCardFromLibraryUseCase } from '../../../application/useCases/commands/RemoveCardFromLibraryUseCase'; 4import { AuthenticatedRequest } from '../../../../../shared/infrastructure/http/middleware/AuthMiddleware'; 5 6export class RemoveCardFromLibraryController extends Controller { 7 constructor( 8 private removeCardFromLibraryUseCase: RemoveCardFromLibraryUseCase, 9 ) { 10 super(); 11 } 12 13 async executeImpl(req: AuthenticatedRequest, res: Response): Promise<any> { 14 try { 15 const { cardId } = req.params; 16 const curatorId = req.did; 17 18 if (!curatorId) { 19 return this.unauthorized(res); 20 } 21 22 if (!cardId) { 23 return this.badRequest(res, 'Card ID is required'); 24 } 25 26 const result = await this.removeCardFromLibraryUseCase.execute({ 27 cardId, 28 curatorId, 29 }); 30 31 if (result.isErr()) { 32 return this.fail(res, result.error); 33 } 34 35 return this.ok(res, result.value); 36 } catch (error: any) { 37 return this.fail(res, error); 38 } 39 } 40}