44 lines
854 B
Go
44 lines
854 B
Go
package dto
|
|
|
|
import (
|
|
"time"
|
|
|
|
"goyco/internal/database"
|
|
)
|
|
|
|
type VoteRequest struct {
|
|
Type string `json:"type" validate:"required,oneof=up down none"`
|
|
}
|
|
|
|
type VoteDTO struct {
|
|
ID uint `json:"id"`
|
|
UserID *uint `json:"user_id,omitempty"`
|
|
PostID uint `json:"post_id"`
|
|
Type string `json:"type"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
}
|
|
|
|
func ToVoteDTO(vote *database.Vote) VoteDTO {
|
|
if vote == nil {
|
|
return VoteDTO{}
|
|
}
|
|
|
|
return VoteDTO{
|
|
ID: vote.ID,
|
|
UserID: vote.UserID,
|
|
PostID: vote.PostID,
|
|
Type: string(vote.Type),
|
|
CreatedAt: vote.CreatedAt,
|
|
UpdatedAt: vote.UpdatedAt,
|
|
}
|
|
}
|
|
|
|
func ToVoteDTOs(votes []database.Vote) []VoteDTO {
|
|
dtos := make([]VoteDTO, len(votes))
|
|
for i := range votes {
|
|
dtos[i] = ToVoteDTO(&votes[i])
|
|
}
|
|
return dtos
|
|
}
|