126 lines
2.9 KiB
Go
126 lines
2.9 KiB
Go
package dto
|
|
|
|
import (
|
|
"time"
|
|
|
|
"goyco/internal/database"
|
|
)
|
|
|
|
type UserDTO struct {
|
|
ID uint `json:"id"`
|
|
Username string `json:"username"`
|
|
Email string `json:"email,omitempty"`
|
|
EmailVerified bool `json:"email_verified,omitempty"`
|
|
EmailVerifiedAt *time.Time `json:"email_verified_at,omitempty"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
}
|
|
|
|
type UserListDTO struct {
|
|
Users []UserDTO `json:"users"`
|
|
Count int `json:"count"`
|
|
Limit int `json:"limit"`
|
|
Offset int `json:"offset"`
|
|
}
|
|
|
|
func ToUserDTO(user *database.User) UserDTO {
|
|
if user == nil {
|
|
return UserDTO{}
|
|
}
|
|
|
|
return UserDTO{
|
|
ID: user.ID,
|
|
Username: user.Username,
|
|
Email: user.Email,
|
|
EmailVerified: user.EmailVerified,
|
|
EmailVerifiedAt: user.EmailVerifiedAt,
|
|
CreatedAt: user.CreatedAt,
|
|
UpdatedAt: user.UpdatedAt,
|
|
}
|
|
}
|
|
|
|
func ToUserDTOs(users []database.User) []UserDTO {
|
|
dtos := make([]UserDTO, len(users))
|
|
for i := range users {
|
|
dtos[i] = ToUserDTO(&users[i])
|
|
}
|
|
return dtos
|
|
}
|
|
|
|
type SanitizedUserDTO struct {
|
|
ID uint `json:"id"`
|
|
Username string `json:"username"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
}
|
|
|
|
func ToSanitizedUserDTO(user *database.User) SanitizedUserDTO {
|
|
if user == nil {
|
|
return SanitizedUserDTO{}
|
|
}
|
|
|
|
return SanitizedUserDTO{
|
|
ID: user.ID,
|
|
Username: user.Username,
|
|
CreatedAt: user.CreatedAt,
|
|
UpdatedAt: user.UpdatedAt,
|
|
}
|
|
}
|
|
|
|
func ToSanitizedUserDTOs(users []database.User) []SanitizedUserDTO {
|
|
dtos := make([]SanitizedUserDTO, len(users))
|
|
for i := range users {
|
|
dtos[i] = ToSanitizedUserDTO(&users[i])
|
|
}
|
|
return dtos
|
|
}
|
|
|
|
type SanitizedUserListDTO struct {
|
|
Users []SanitizedUserDTO `json:"users"`
|
|
Count int `json:"count"`
|
|
Limit int `json:"limit"`
|
|
Offset int `json:"offset"`
|
|
}
|
|
|
|
func ToUserListDTO(users []database.User, limit, offset int) UserListDTO {
|
|
userDTOs := ToUserDTOs(users)
|
|
return UserListDTO{
|
|
Users: userDTOs,
|
|
Count: len(userDTOs),
|
|
Limit: limit,
|
|
Offset: offset,
|
|
}
|
|
}
|
|
|
|
func ToSanitizedUserListDTO(users []database.User, limit, offset int) SanitizedUserListDTO {
|
|
userDTOs := ToSanitizedUserDTOs(users)
|
|
return SanitizedUserListDTO{
|
|
Users: userDTOs,
|
|
Count: len(userDTOs),
|
|
Limit: limit,
|
|
Offset: offset,
|
|
}
|
|
}
|
|
|
|
type RegistrationResponseDTO struct {
|
|
User UserDTO `json:"user"`
|
|
VerificationSent bool `json:"verification_sent"`
|
|
}
|
|
|
|
func ToRegistrationResponseDTO(user *database.User, verificationSent bool) RegistrationResponseDTO {
|
|
return RegistrationResponseDTO{
|
|
User: ToUserDTO(user),
|
|
VerificationSent: verificationSent,
|
|
}
|
|
}
|
|
|
|
type AccountDeletionResponseDTO struct {
|
|
PostsDeleted bool `json:"posts_deleted"`
|
|
}
|
|
|
|
type MessageResponseDTO struct {
|
|
Message string `json:"message"`
|
|
}
|
|
|
|
type EmptyResponseDTO struct{}
|