meti-backend/internal/transformer/user_transformer.go
Aditya Siregar de60983e4e Init
2025-08-09 23:44:03 +07:00

67 lines
1.4 KiB
Go

package transformer
import (
"eslogad-be/internal/contract"
"eslogad-be/internal/entities"
)
func CreateUserRequestToEntity(req *contract.CreateUserRequest, passwordHash string) *entities.User {
if req == nil {
return nil
}
return &entities.User{
Name: req.Name,
Email: req.Email,
PasswordHash: passwordHash,
IsActive: true,
}
}
func UpdateUserEntity(existing *entities.User, req *contract.UpdateUserRequest) *entities.User {
if existing == nil || req == nil {
return existing
}
if req.Name != nil {
existing.Name = *req.Name
}
if req.Email != nil {
existing.Email = *req.Email
}
if req.IsActive != nil {
existing.IsActive = *req.IsActive
}
return existing
}
func EntityToContract(user *entities.User) *contract.UserResponse {
if user == nil {
return nil
}
resp := &contract.UserResponse{
ID: user.ID,
Name: user.Profile.FullName,
Email: user.Email,
IsActive: user.IsActive,
CreatedAt: user.CreatedAt,
UpdatedAt: user.UpdatedAt,
}
if user.Profile != nil {
resp.Profile = ProfileEntityToContract(user.Profile)
}
return resp
}
func EntitiesToContracts(users []*entities.User) []contract.UserResponse {
if users == nil {
return nil
}
responses := make([]contract.UserResponse, len(users))
for i, u := range users {
resp := EntityToContract(u)
if resp != nil {
responses[i] = *resp
}
}
return responses
}