To gitea and beyond, let's go(-yco)

This commit is contained in:
2025-11-10 19:12:09 +01:00
parent 8f6133392d
commit 71a031342b
245 changed files with 83994 additions and 0 deletions

69
internal/dto/post.go Normal file
View File

@@ -0,0 +1,69 @@
package dto
import (
"time"
"goyco/internal/database"
)
type PostDTO struct {
ID uint `json:"id"`
Title string `json:"title"`
URL string `json:"url"`
Content string `json:"content,omitempty"`
AuthorID *uint `json:"author_id,omitempty"`
AuthorName string `json:"author_name,omitempty"`
Author *UserDTO `json:"author,omitempty"`
UpVotes int `json:"up_votes"`
DownVotes int `json:"down_votes"`
Score int `json:"score"`
CurrentVote string `json:"current_vote,omitempty"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
type PostListDTO struct {
Posts []PostDTO `json:"posts"`
Count int `json:"count"`
Limit int `json:"limit"`
Offset int `json:"offset"`
}
func ToPostDTO(post *database.Post) PostDTO {
if post == nil {
return PostDTO{}
}
dto := PostDTO{
ID: post.ID,
Title: post.Title,
URL: post.URL,
Content: post.Content,
AuthorID: post.AuthorID,
AuthorName: post.AuthorName,
UpVotes: post.UpVotes,
DownVotes: post.DownVotes,
Score: post.Score,
CreatedAt: post.CreatedAt,
UpdatedAt: post.UpdatedAt,
}
if post.CurrentVote != "" {
dto.CurrentVote = string(post.CurrentVote)
}
if post.Author.ID != 0 {
authorDTO := ToUserDTO(&post.Author)
dto.Author = &authorDTO
}
return dto
}
func ToPostDTOs(posts []database.Post) []PostDTO {
dtos := make([]PostDTO, len(posts))
for i := range posts {
dtos[i] = ToPostDTO(&posts[i])
}
return dtos
}