/
action.go
59 lines (42 loc) · 992 Bytes
/
action.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
package repositories
import (
"github.com/jinzhu/gorm"
"github.com/train-cat/api-train/app/models"
)
type action struct{}
// Action namespace
var Action action
// Persist one action in database
func (r action) Persist(i *models.ActionInput) (*models.Action, error) {
a := i.ToEntity()
// if already exist return it
if exist, err := ValueExist(a, "uuid", a.UUID); exist {
if err != nil {
return nil, err
}
a, err = r.FindByUUID(a.UUID)
if err != nil {
return nil, err
}
if a != nil {
return a, err
}
}
err := db.Save(a).Error
return a, err
}
// FindOne action by id
func (r action) FindOne(id uint) (*models.Action, error) {
a := &models.Action{}
err := db.Where("id = ?", id).First(a).Error
return a, err
}
// FindByUUID action
func (r action) FindByUUID(uuid string) (*models.Action, error) {
e := &models.Action{}
err := db.Where("uuid = ?", uuid).First(e).Error
if err == gorm.ErrRecordNotFound {
return nil, nil
}
return e, err
}