-
-
Notifications
You must be signed in to change notification settings - Fork 815
Expand file tree
/
Copy pathpost.go
More file actions
75 lines (68 loc) · 2.29 KB
/
Copy pathpost.go
File metadata and controls
75 lines (68 loc) · 2.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
package dbEntities
import (
"context"
"time"
"github.com/getfider/fider/app/models/entity"
"github.com/getfider/fider/app/models/enum"
"github.com/getfider/fider/app/pkg/dbx"
"github.com/lib/pq"
)
type Post struct {
ID int `db:"id"`
Number int `db:"number"`
Title string `db:"title"`
Slug string `db:"slug"`
Description string `db:"description"`
CreatedAt time.Time `db:"created_at"`
Search []byte `db:"search"`
SearchResponse []byte `db:"search_response"`
User *User `db:"user"`
HasVoted bool `db:"has_voted"`
VotesCount int `db:"votes_count"`
CommentsCount int `db:"comments_count"`
RecentVotes int `db:"recent_votes_count"`
RecentComments int `db:"recent_comments_count"`
Status int `db:"status"`
Response dbx.NullString `db:"response"`
RespondedAt dbx.NullTime `db:"response_date"`
ResponseUser *User `db:"response_user"`
OriginalNumber dbx.NullInt `db:"original_number"`
OriginalTitle dbx.NullString `db:"original_title"`
OriginalSlug dbx.NullString `db:"original_slug"`
OriginalStatus dbx.NullInt `db:"original_status"`
Tags pq.StringArray `db:"tags"`
IsApproved bool `db:"is_approved"`
}
func (i *Post) ToModel(ctx context.Context) *entity.Post {
post := &entity.Post{
ID: i.ID,
Number: i.Number,
Title: i.Title,
Slug: i.Slug,
Description: i.Description,
CreatedAt: i.CreatedAt,
User: i.User.ToModel(ctx),
HasVoted: i.HasVoted,
VotesCount: i.VotesCount,
CommentsCount: i.CommentsCount,
Status: enum.PostStatus(i.Status),
Tags: i.Tags,
IsApproved: i.IsApproved,
}
if i.Response.Valid {
post.Response = &entity.PostResponse{
Text: i.Response.String,
RespondedAt: i.RespondedAt.Time,
User: i.ResponseUser.ToModel(ctx),
}
if i.OriginalNumber.Valid {
post.Response.Original = &entity.OriginalPost{
Number: int(i.OriginalNumber.Int64),
Title: i.OriginalTitle.String,
Slug: i.OriginalSlug.String,
Status: enum.PostStatus(i.OriginalStatus.Int64),
}
}
}
return post
}