34 lines
1.1 KiB
TypeScript
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,
|
|
};
|
|
}
|
|
}
|