-
Notifications
You must be signed in to change notification settings - Fork 0
/
registry.go
101 lines (88 loc) · 2.51 KB
/
registry.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
101
package dao
import (
"github.com/astaxie/beego/orm"
"github.com/goharbor/harbor/src/common/dao"
"github.com/goharbor/harbor/src/replication/dao/models"
)
// ListRegistryQuery defines the query conditions to list registry.
type ListRegistryQuery struct {
// Query is name query
Query string
// Offset specifies the offset in the registry list to return
Offset int64
// Limit specifies the maximum registries to return
Limit int64
}
// AddRegistry add a new registry
func AddRegistry(registry *models.Registry) (int64, error) {
o := dao.GetOrmer()
return o.Insert(registry)
}
// GetRegistry gets one registry from database by id.
func GetRegistry(id int64) (*models.Registry, error) {
o := dao.GetOrmer()
r := models.Registry{ID: id}
err := o.Read(&r, "ID")
if err == orm.ErrNoRows {
return nil, nil
}
return &r, err
}
// GetRegistryByName gets one registry from database by its name.
func GetRegistryByName(name string) (*models.Registry, error) {
o := dao.GetOrmer()
r := models.Registry{Name: name}
err := o.Read(&r, "Name")
if err == orm.ErrNoRows {
return nil, nil
}
return &r, err
}
// GetRegistryByURL gets one registry from database by its URL.
func GetRegistryByURL(url string) (*models.Registry, error) {
o := dao.GetOrmer()
r := models.Registry{URL: url}
err := o.Read(&r, "URL")
if err == orm.ErrNoRows {
return nil, nil
}
return &r, err
}
// ListRegistries lists registries. Registries returned are sorted by creation time.
// - query: query to the registry name, name query and pagination are defined.
func ListRegistries(query ...*ListRegistryQuery) (int64, []*models.Registry, error) {
o := dao.GetOrmer()
q := o.QueryTable(&models.Registry{})
if len(query) > 0 && len(query[0].Query) > 0 {
q = q.Filter("name__contains", query[0].Query)
}
total, err := q.Count()
if err != nil {
return -1, nil, err
}
// limit being -1 means no pagination specified.
if len(query) > 0 && query[0].Limit != -1 {
q = q.Offset(query[0].Offset).Limit(query[0].Limit)
}
var registries []*models.Registry
_, err = q.All(®istries)
if err != nil {
return total, nil, err
}
if registries == nil {
registries = []*models.Registry{}
}
return total, registries, nil
}
// UpdateRegistry updates one registry
func UpdateRegistry(registry *models.Registry, props ...string) error {
o := dao.GetOrmer()
_, err := o.Update(registry, props...)
return err
}
// DeleteRegistry deletes a registry
func DeleteRegistry(id int64) error {
o := dao.GetOrmer()
_, err := o.Delete(&models.Registry{ID: id})
return err
}