-
Notifications
You must be signed in to change notification settings - Fork 206
/
post.go
100 lines (96 loc) · 2.36 KB
/
post.go
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
package methods
import (
"github.com/kabukky/journey/database"
"github.com/kabukky/journey/date"
"github.com/kabukky/journey/structure"
"log"
)
func SavePost(p *structure.Post) error {
tagIds := make([]int64, 0)
// Insert tags
for _, tag := range p.Tags {
// Tag slug might already be in database
tagId, err := database.RetrieveTagIdBySlug(tag.Slug)
if err != nil {
// Tag is probably not in database yet
tagId, err = database.InsertTag(tag.Name, tag.Slug, date.GetCurrentTime(), p.Author.Id)
if err != nil {
return err
}
}
if tagId != 0 {
tagIds = append(tagIds, tagId)
}
}
// Insert post
postId, err := database.InsertPost(p.Title, p.Slug, p.Markdown, p.Html, p.IsFeatured, p.IsPage, p.IsPublished, p.MetaDescription, p.Image, *p.Date, p.Author.Id)
if err != nil {
return err
}
// Insert postTags
for _, tagId := range tagIds {
err = database.InsertPostTag(postId, tagId)
if err != nil {
return err
}
}
// Generate new global blog
err = GenerateBlog()
if err != nil {
log.Panic("Error: couldn't generate blog data:", err)
}
return nil
}
func UpdatePost(p *structure.Post) error {
tagIds := make([]int64, 0)
// Insert tags
for _, tag := range p.Tags {
// Tag slug might already be in database
tagId, err := database.RetrieveTagIdBySlug(tag.Slug)
if err != nil {
// Tag is probably not in database yet
tagId, err = database.InsertTag(tag.Name, tag.Slug, date.GetCurrentTime(), p.Author.Id)
if err != nil {
return err
}
}
if tagId != 0 {
tagIds = append(tagIds, tagId)
}
}
// Update post
err := database.UpdatePost(p.Id, p.Title, p.Slug, p.Markdown, p.Html, p.IsFeatured, p.IsPage, p.IsPublished, p.MetaDescription, p.Image, *p.Date, p.Author.Id)
if err != nil {
return err
}
// Delete old postTags
err = database.DeletePostTagsForPostId(p.Id)
// Insert postTags
if err != nil {
return err
}
for _, tagId := range tagIds {
err = database.InsertPostTag(p.Id, tagId)
if err != nil {
return err
}
}
// Generate new global blog
err = GenerateBlog()
if err != nil {
log.Panic("Error: couldn't generate blog data:", err)
}
return nil
}
func DeletePost(postId int64) error {
err := database.DeletePostById(postId)
if err != nil {
return err
}
// Generate new global blog
err = GenerateBlog()
if err != nil {
log.Panic("Error: couldn't generate blog data:", err)
}
return nil
}