UserConverter.java
package com.hwhub.backend.infrastructure.mybatis.converter;
import com.hwhub.backend.domain.enums.ThemeMode;
import com.hwhub.backend.domain.model.UserModel;
import com.hwhub.backend.infrastructure.mybatis.generated.entity.MUser;
public final class UserConverter {
private UserConverter() {}
public static UserModel toModel(MUser entity) {
if (entity == null) {
return null;
}
ThemeMode themeMode =
entity.getThemeMode() != null
? ThemeMode.fromCode(entity.getThemeMode())
: ThemeMode.SYSTEM;
return UserModel.reconstruct(
entity.getUserId(),
entity.getEmail(),
entity.getPasswordHash(),
DateConverter.toLocalDateTime(entity.getPasswordChangedAt()),
entity.getAuthProvider(),
entity.getAuthProviderId(),
entity.getDisplayName(),
entity.getLocale(),
themeMode,
entity.getNotificationEnabled(),
entity.getProfileImageKey(),
DateConverter.toLocalDateTime(entity.getEmailVerifiedAt()),
entity.getIsActive(),
DateConverter.toLocalDateTime(entity.getCreatedAt()),
DateConverter.toLocalDateTime(entity.getUpdatedAt()));
}
public static MUser toEntity(UserModel model) {
if (model == null) {
return null;
}
MUser entity = new MUser();
entity.setUserId(model.getUserId());
entity.setEmail(model.getEmail());
entity.setPasswordHash(model.getPasswordHash());
entity.setPasswordChangedAt(DateConverter.toDate(model.getPasswordChangedAt()));
entity.setAuthProvider(model.getAuthProvider());
entity.setAuthProviderId(model.getAuthProviderId());
entity.setDisplayName(model.getDisplayName());
entity.setLocale(model.getLocale());
entity.setNotificationEnabled(model.isNotificationEnabled());
entity.setProfileImageKey(model.getProfileImageKey());
entity.setEmailVerifiedAt(DateConverter.toDate(model.getEmailVerifiedAt()));
entity.setIsActive(model.isActive());
// created_at, updated_at はDB側で更新するため、渡さない
return entity;
}
}