Files
lti-api/tools/templates/dto.tmpl
T

66 lines
1.6 KiB
Cheetah

{{define "dto"}}package dto
import (
"time"
entity "gitlab.com/mbugroup/lti-api.git/internal/entities"
userDTO "gitlab.com/mbugroup/lti-api.git/internal/modules/users/dto"
)
// === DTO Structs ===
type {{Pascal .Entity}}BaseDTO struct {
Id uint `json:"id"`
Name string `json:"name"`
}
type {{Pascal .Entity}}ListDTO struct {
{{Pascal .Entity}}BaseDTO
CreatedUser *userDTO.UserBaseDTO `json:"created_user"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
type {{Pascal .Entity}}DetailDTO struct {
{{Pascal .Entity}}ListDTO
}
// === Mapper Functions ===
func To{{Pascal .Entity}}BaseDTO(e entity.{{Pascal .Entity}}) {{Pascal .Entity}}BaseDTO {
return {{Pascal .Entity}}BaseDTO{
Id: e.Id,
Name: e.Name,
}
}
func To{{Pascal .Entity}}ListDTO(e entity.{{Pascal .Entity}}) {{Pascal .Entity}}ListDTO {
var createdUser *userDTO.UserBaseDTO
if e.CreatedUser.Id != 0 {
mapped := userDTO.ToUserBaseDTO(e.CreatedUser)
createdUser = &mapped
}
return {{Pascal .Entity}}ListDTO{
{{Pascal .Entity}}BaseDTO: To{{Pascal .Entity}}BaseDTO(e),
CreatedAt: e.CreatedAt,
UpdatedAt: e.UpdatedAt,
CreatedUser: createdUser,
}
}
func To{{Pascal .Entity}}ListDTOs(e []entity.{{Pascal .Entity}}) []{{Pascal .Entity}}ListDTO {
result := make([]{{Pascal .Entity}}ListDTO, len(e))
for i, r := range e {
result[i] = To{{Pascal .Entity}}ListDTO(r)
}
return result
}
func To{{Pascal .Entity}}DetailDTO(e entity.{{Pascal .Entity}}) {{Pascal .Entity}}DetailDTO {
return {{Pascal .Entity}}DetailDTO{
{{Pascal .Entity}}ListDTO: To{{Pascal .Entity}}ListDTO(e),
}
}
{{end}}