/
c-links.go
53 lines (45 loc) · 1.25 KB
/
c-links.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
package site
import "github.com/gin-gonic/gin"
func (p *Plugin) indexLinks(c *gin.Context, l string) (interface{}, error) {
var items []Link
err := p.Db.Where("lang = ?", l).Order("updated_at DESC").Find(&items).Error
return items, err
}
type fmLink struct {
Loc string `form:"loc" binding:"required,max=16"`
Href string `form:"href" binding:"required,max=255"`
Label string `form:"label" binding:"required,max=255"`
Sort int `form:"sort"`
}
func (p *Plugin) createLink(c *gin.Context, l string, o interface{}) (interface{}, error) {
fm := o.(*fmLink)
n := Link{
Lang: l,
Loc: fm.Loc,
Href: fm.Href,
Label: fm.Label,
Sort: fm.Sort,
}
err := p.Db.Create(&n).Error
return n, err
}
func (p *Plugin) updateLink(c *gin.Context, l string, o interface{}) (interface{}, error) {
fm := o.(*fmLink)
var n Link
if err := p.Db.Where("id = ?", c.Param("id")).First(&n).Error; err != nil {
return nil, err
}
err := p.Db.Model(&n).Updates(map[string]interface{}{
"loc": fm.Loc,
"sort": fm.Sort,
"label": fm.Label,
"href": fm.Href,
}).Error
return n, err
}
func (p *Plugin) destroyLink(c *gin.Context, _ string) (interface{}, error) {
err := p.Db.
Where("id = ?", c.Param("id")).
Delete(Link{}).Error
return gin.H{}, err
}