A social knowledge tool for researchers built on ATProto
at development 37 lines 1.2 kB view raw
1import { Controller } from '../../../../../shared/infrastructure/http/Controller'; 2import { Request, Response } from 'express'; 3import { GetUrlCardsUseCase } from '../../../application/useCases/queries/GetUrlCardsUseCase'; 4import { CardSortField, SortOrder } from '../../../domain/ICardQueryRepository'; 5 6export class GetUserUrlCardsController extends Controller { 7 constructor(private getUrlCardsUseCase: GetUrlCardsUseCase) { 8 super(); 9 } 10 11 async executeImpl(req: Request, res: Response): Promise<any> { 12 try { 13 const { identifier } = req.params; 14 const { page, limit, sortBy, sortOrder } = req.query; 15 16 if (!identifier) { 17 return this.fail(res, 'Identifier (DID or handle) is required'); 18 } 19 20 const result = await this.getUrlCardsUseCase.execute({ 21 userId: identifier, 22 page: page ? parseInt(page as string) : undefined, 23 limit: limit ? parseInt(limit as string) : undefined, 24 sortBy: sortBy as CardSortField, 25 sortOrder: sortOrder as SortOrder, 26 }); 27 28 if (result.isErr()) { 29 return this.fail(res, result.error); 30 } 31 32 return this.ok(res, result.value); 33 } catch (error: any) { 34 return this.fail(res, error); 35 } 36 } 37}