ekyc

Electronic KYC process with uploading ID document using OAuth 2.1 (experimental)
Log | Files | Refs | README | LICENSE

id_document.ts (1034B)


      1 import { IDDocumentRepository } from "#core/application/id_document/id_document_repository.ts";
      2 import { EntityLocked } from "#core/application/repository_error.ts";
      3 import { IDDocument } from "#core/domain/id_document.ts";
      4 import { UUID } from "#core/domain/uuid.ts";
      5 import {
      6   IDDocumentDto,
      7   mapFromIDDocument,
      8   mapToIDDocument,
      9 } from "#infrastructure/memory/mapper/id_document.ts";
     10 
     11 export class MemoryIDDocumentRepositoryAdapter implements IDDocumentRepository {
     12   constructor(private readonly entities: Map<string, IDDocumentDto>) {
     13   }
     14 
     15   findOrCreate(id: UUID): IDDocument {
     16     const dto = this.entities.get(id.toString());
     17     if (dto !== undefined) {
     18       return mapToIDDocument(dto);
     19     }
     20     return new IDDocument(id);
     21   }
     22 
     23   store(entity: IDDocument): void {
     24     const dto = mapFromIDDocument(entity);
     25     const latest = this.entities.get(dto.uuid)?.version ?? 0;
     26     if (latest > dto.version) {
     27       throw new EntityLocked();
     28     }
     29     entity.version = ++dto.version;
     30     this.entities.set(dto.uuid, dto);
     31   }
     32 }