id_document_list.ts (1206B)
1 import { 2 IDDocumentListRequest, 3 IDDocumentListResponse, 4 IDDocumentListUseCase, 5 } from "#core/application/id_document/list.ts"; 6 7 import { IDDocumentDto } from "#infrastructure/memory/mapper/id_document.ts"; 8 9 const NB_PER_PAGE = 10; 10 11 export class MemoryIDDocumentListAdapter implements IDDocumentListUseCase { 12 constructor(private readonly idDocumentEntities: Map<string, IDDocumentDto>) { 13 } 14 15 execute(request: IDDocumentListRequest): Promise<IDDocumentListResponse> { 16 const items = Array.from(this.idDocumentEntities.values()) 17 .filter((item) => item.state !== "capturing") 18 .filter((_, index) => index > (request?.cursor ?? 0)) 19 .slice(0, NB_PER_PAGE) 20 .map((i): IDDocumentListResponse["items"][number] => ({ 21 uuid: i.uuid, 22 firstName: i.firstName, 23 lastName: i.lastName, 24 birthDate: i.birthDate, 25 sex: i.sex, 26 nationality: i.nationality, 27 country: i.country, 28 docFront: i.front, 29 docBack: i.back, 30 faceLeft: i.faceLeft, 31 faceFront: i.faceFront, 32 faceRight: i.faceRight, 33 })); 34 35 return Promise.resolve({ 36 items, 37 next: (request.cursor ?? 0) + NB_PER_PAGE, 38 }); 39 } 40 }