/
namespace.go
49 lines (41 loc) · 1.24 KB
/
namespace.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
package repository
import (
"github.com/jinzhu/gorm"
"github.com/fuhsicloud/fuhsicloud/src/repository/types"
)
type NamespaceRepository interface {
Find(name string) (res *types.Namespace, err error)
Create(ns *types.Namespace) error
UserMyNsList(memberId int64) ([]types.Namespace, error)
FindByNames(names []string) (res []*types.Namespace, err error)
FindAll() (res []*types.Namespace, err error)
}
type namespace struct {
db *gorm.DB
}
func NewNamespaceRepository(db *gorm.DB) NamespaceRepository {
return &namespace{db: db}
}
func (c *namespace) Find(name string) (res *types.Namespace, err error) {
var ns types.Namespace
if err = c.db.First(&ns, "name = ?", name).Error; err != nil {
return
}
return &ns, nil
}
func (c *namespace) Create(ns *types.Namespace) error {
return c.db.Save(ns).Error
}
func (c *namespace) UserMyNsList(memberId int64) ([]types.Namespace, error) {
var m types.Member
err := c.db.Preload("Namespaces").First(&m, memberId).Error
return m.Namespaces, err
}
func (c *namespace) FindByNames(names []string) (res []*types.Namespace, err error) {
err = c.db.Find(&res, "name in (?)", names).Error
return
}
func (c *namespace) FindAll() (res []*types.Namespace, err error) {
err = c.db.Find(&res).Error
return
}