-
Notifications
You must be signed in to change notification settings - Fork 0
/
repos.go
88 lines (71 loc) · 2.52 KB
/
repos.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
package services
import (
"encoding/json"
"github.com/cyops-se/safe-import/si-outer/common"
"github.com/cyops-se/safe-import/si-outer/types"
"github.com/cyops-se/safe-import/usvc"
)
type RepoService struct {
usvc.Usvc
repos map[int]*types.Job
}
func (svc *RepoService) Initialize(broker *usvc.UsvcBroker) {
svc.InitializeService(broker, 1, "si-outer", "repos", "Takes care of repositories (only directory based repos supported at the moment)")
svc.RegisterMethod("allitems", svc.findAll)
svc.RegisterMethod("findbyid", svc.findById)
svc.RegisterMethod("create", svc.create)
svc.RegisterMethod("update", svc.update)
svc.RegisterMethod("deletebyid", svc.deleteById)
svc.repos = make(map[int]*types.Job, 1)
}
func (svc *RepoService) findAll(payload string) (interface{}, error) {
var items []types.Repository
common.DB.Find(&items)
return items, nil
}
func (svc *RepoService) findById(payload string) (interface{}, error) {
var item types.ByIdRequest
if err := json.Unmarshal([]byte(payload), &item); err != nil {
svc.LogGeneric("error", "Marshalling request to JSON failed: %#v", err)
return nil, err
}
var repo types.Repository
common.DB.Find(&repo, item.ID)
return item, nil
}
func (svc *RepoService) create(payload string) (interface{}, error) {
var item types.Repository
if err := json.Unmarshal([]byte(payload), &item); err != nil {
svc.LogGeneric("error", "Marshalling request to JSON failed: %#v", err)
return nil, err
}
if result := common.DB.Save(&item); result.Error != nil {
svc.LogGeneric("error", "Failed to query database, error: %#v", result.Error)
return nil, result.Error
}
return item, nil
}
func (svc *RepoService) update(payload string) (interface{}, error) {
var item types.Repository
if err := json.Unmarshal([]byte(payload), &item); err != nil {
svc.LogGeneric("error", "Marshalling request to JSON failed: %#v", err)
return nil, err
}
if result := common.DB.Save(&item); result.Error != nil {
svc.LogGeneric("error", "Failed to query database, error: %#v", result.Error)
return nil, result.Error
}
return item, nil
}
func (svc *RepoService) deleteById(payload string) (interface{}, error) {
var item types.ByIdRequest
if err := json.Unmarshal([]byte(payload), &item); err != nil {
svc.LogGeneric("error", "Marshalling request to JSON failed: %#v", err)
return nil, err
}
if result := common.DB.Delete(&types.Repository{}, item.ID); result.Error != nil {
svc.LogGeneric("error", "Failed to query database, error: %#v", result.Error)
return nil, result.Error
}
return item, nil
}