rwadurian/backend/services/blockchain-service/src/infrastructure/persistence/mappers/monitored-address.mapper.ts

34 lines
1.1 KiB
TypeScript

import { MonitoredAddress as PrismaMonitoredAddress } from '@prisma/client';
import { MonitoredAddress, MonitoredAddressProps } from '@/domain/aggregates/monitored-address';
import { ChainType, EvmAddress } from '@/domain/value-objects';
export class MonitoredAddressMapper {
static toDomain(prisma: PrismaMonitoredAddress): MonitoredAddress {
const props: MonitoredAddressProps = {
id: prisma.id,
chainType: ChainType.create(prisma.chainType),
address: EvmAddress.fromUnchecked(prisma.address),
accountSequence: prisma.accountSequence,
userId: prisma.userId,
isActive: prisma.isActive,
createdAt: prisma.createdAt,
updatedAt: prisma.updatedAt,
};
return MonitoredAddress.reconstitute(props);
}
static toPersistence(
domain: MonitoredAddress,
): Omit<PrismaMonitoredAddress, 'id' | 'createdAt' | 'updatedAt'> & { id?: bigint } {
return {
id: domain.id,
chainType: domain.chainType.toString(),
address: domain.address.lowercase,
accountSequence: domain.accountSequence,
userId: domain.userId,
isActive: domain.isActive,
};
}
}