-
Notifications
You must be signed in to change notification settings - Fork 1
/
blog.go
85 lines (65 loc) · 1.86 KB
/
blog.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
package blog
import (
"github.com/kfchen81/eel/devapp/business/account"
b_blog "github.com/kfchen81/eel/devapp/business/blog"
"github.com/kfchen81/eel"
)
type Blog struct {
eel.RestResource
}
func (this *Blog) Resource() string {
return "blog.blog"
}
func (this *Blog) GetParameters() map[string][]string {
return map[string][]string{
"GET": []string{"id:int"},
"PUT": []string{"title", "content", },
"POST": []string{"id:int", "title", "content", },
"DELETE": []string{"id:int"},
}
}
func (this *Blog) Get(ctx *eel.Context) {
req := ctx.Request
id, _ := req.GetInt("id")
bCtx := ctx.GetBusinessContext()
blogRepository := b_blog.NewBlogRepository(bCtx)
blog := blogRepository.GetBlog(id)
fillService := b_blog.NewFillBlogService(bCtx)
fillService.Fill([]*b_blog.Blog{ blog }, eel.FillOption{
"with_user": true,
"with_user_actions": true,
})
encodeService := b_blog.NewEncodeBlogService(bCtx)
respData := encodeService.Encode(blog)
ctx.Response.JSON(respData)
}
func (this *Blog) Put(ctx *eel.Context) {
req := ctx.Request
title := req.GetString("title")
content := req.GetString("content")
bCtx := ctx.GetBusinessContext()
user := account.GetUserFromContext(bCtx)
blog := b_blog.NewBlog(bCtx, user, title, content)
ctx.Response.JSON(eel.Map{
"id": blog.Id,
})
}
func (this *Blog) Post(ctx *eel.Context) {
req := ctx.Request
id, _ := req.GetInt("id")
title := req.GetString("title")
content := req.GetString("content")
bCtx := ctx.GetBusinessContext()
blogRepository := b_blog.NewBlogRepository(bCtx)
blog := blogRepository.GetBlog(id)
blog.Update(title, content)
ctx.Response.JSON(eel.Map{})
}
func (this *Blog) Delete(ctx *eel.Context) {
req := ctx.Request
id, _ := req.GetInt("id")
bCtx := ctx.GetBusinessContext()
blogRepository := b_blog.NewBlogRepository(bCtx)
blogRepository.DeleteBlog(id)
ctx.Response.JSON(eel.Map{})
}