UserPersistenceMapper.java
package com.project.auth.infrastructure.persistence.user.mapper;
import com.project.auth.domain.user.exception.DomainException;
import com.project.auth.domain.user.model.User;
import com.project.auth.domain.user.model.UserEmail;
import com.project.auth.domain.user.model.UserName;
import com.project.auth.infrastructure.persistence.user.entity.UserJpaEntity;
import com.project.auth.infrastructure.support.exception.InfrastructureErrorCode;
import com.project.auth.infrastructure.support.exception.InfrastructureException;
public class UserPersistenceMapper {
public UserJpaEntity toEntity(User user) {
return UserJpaEntity.of(
user.getId(),
user.getEmail(),
user.getName(),
user.getProvider(),
user.getProviderSubject(),
user.getCreatedAt()
);
}
public User toDomain(UserJpaEntity userJpaEntity) {
try {
return User.restore(
userJpaEntity.getId(),
UserEmail.from(userJpaEntity.getEmail()),
UserName.from(userJpaEntity.getName()),
userJpaEntity.getProvider(),
userJpaEntity.getProviderSubject(),
userJpaEntity.getCreatedAt()
);
} catch (DomainException | IllegalArgumentException | NullPointerException exception) {
throw new InfrastructureException(
InfrastructureErrorCode.PERSISTED_DATA_INVALID,
exception
);
}
}
}