Something went wrong. Try again.
A social knowledge tool for research trails, built on ATProto semble.so
research-tool social-network tools-for-thought atproto
Something went wrong. Try again.
TypeScript
at development
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849import { User } from '../../domain/User';import { UserDTO } from '../dtos/UserDTO';import { DID } from '../../domain/value-objects/DID';import { Handle } from '../../domain/value-objects/Handle';import { UniqueEntityID } from 'src/shared/domain/UniqueEntityID';
export class UserMap { public static toDTO(user: User): UserDTO { return { did: user.did.value, handle: user.handle?.value, linkedAt: user.linkedAt, lastLoginAt: user.lastLoginAt, }; }
public static toDomain(dto: UserDTO): User { const didOrError = DID.create(dto.did);
if (didOrError.isErr()) { throw new Error(`Could not create DID: ${didOrError.error.message}`); }
let handle: Handle | undefined; if (dto.handle) { const handleOrError = Handle.create(dto.handle); if (handleOrError.isOk()) { handle = handleOrError.value; } }
const userOrError = User.create( { did: didOrError.value, handle, linkedAt: dto.linkedAt, lastLoginAt: dto.lastLoginAt, }, new UniqueEntityID(dto.did), );
if (userOrError.isErr()) { throw new Error(`Could not create User: ${userOrError.error.message}`); }
return userOrError.value; }}