A social knowledge tool for researchers built on ATProto
at development 1.3 kB view raw
1import { User } from '../../domain/User'; 2import { UserDTO } from '../dtos/UserDTO'; 3import { DID } from '../../domain/value-objects/DID'; 4import { Handle } from '../../domain/value-objects/Handle'; 5import { UniqueEntityID } from 'src/shared/domain/UniqueEntityID'; 6 7export class UserMap { 8 public static toDTO(user: User): UserDTO { 9 return { 10 did: user.did.value, 11 handle: user.handle?.value, 12 linkedAt: user.linkedAt, 13 lastLoginAt: user.lastLoginAt, 14 }; 15 } 16 17 public static toDomain(dto: UserDTO): User { 18 const didOrError = DID.create(dto.did); 19 20 if (didOrError.isErr()) { 21 throw new Error(`Could not create DID: ${didOrError.error.message}`); 22 } 23 24 let handle: Handle | undefined; 25 if (dto.handle) { 26 const handleOrError = Handle.create(dto.handle); 27 if (handleOrError.isOk()) { 28 handle = handleOrError.value; 29 } 30 } 31 32 const userOrError = User.create( 33 { 34 did: didOrError.value, 35 handle, 36 linkedAt: dto.linkedAt, 37 lastLoginAt: dto.lastLoginAt, 38 }, 39 new UniqueEntityID(dto.did), 40 ); 41 42 if (userOrError.isErr()) { 43 throw new Error(`Could not create User: ${userOrError.error.message}`); 44 } 45 46 return userOrError.value; 47 } 48}