mirror of
https://github.com/1Panel-dev/KubePi.git
synced 2025-09-27 03:36:04 +08:00
96 lines
2.9 KiB
Go
96 lines
2.9 KiB
Go
package clusterbinding
|
|
|
|
import (
|
|
"errors"
|
|
v1Cluster "github.com/KubeOperator/kubepi/internal/model/v1/cluster"
|
|
"github.com/KubeOperator/kubepi/internal/service/v1/common"
|
|
"github.com/asdine/storm/v3/q"
|
|
"github.com/google/uuid"
|
|
"time"
|
|
)
|
|
|
|
type Service interface {
|
|
common.DBService
|
|
GetClusterBindingByClusterName(clusterName string, options common.DBOptions) ([]v1Cluster.Binding, error)
|
|
CreateClusterBinding(binding *v1Cluster.Binding, options common.DBOptions) error
|
|
UpdateClusterBinding(name string, binding *v1Cluster.Binding, options common.DBOptions) error
|
|
GetBindingByClusterNameAndUserName(clusterName string, userName string, options common.DBOptions) (*v1Cluster.Binding, error)
|
|
GetBindingsByUserName(userName string, options common.DBOptions) ([]v1Cluster.Binding, error)
|
|
Delete(name string, options common.DBOptions) error
|
|
}
|
|
|
|
func NewService() Service {
|
|
return &service{}
|
|
}
|
|
|
|
type service struct {
|
|
common.DefaultDBService
|
|
}
|
|
|
|
func (s *service) UpdateClusterBinding(name string, binding *v1Cluster.Binding, options common.DBOptions) error {
|
|
db := s.GetDB(options)
|
|
|
|
var b v1Cluster.Binding
|
|
if err := db.One("Name", name, &b); err != nil {
|
|
return err
|
|
}
|
|
if b.BuiltIn {
|
|
return errors.New("can not delete this resource,because it created by system")
|
|
}
|
|
binding.UUID = b.UUID
|
|
binding.CreatedBy = b.CreatedBy
|
|
binding.CreateAt = b.CreateAt
|
|
binding.UpdateAt = time.Now()
|
|
return db.Update(binding)
|
|
}
|
|
|
|
func (s *service) GetBindingsByUserName(userName string, options common.DBOptions) ([]v1Cluster.Binding, error) {
|
|
db := s.GetDB(options)
|
|
query := db.Select(q.Eq("UserRef", userName))
|
|
var rbs []v1Cluster.Binding
|
|
if err := query.Find(&rbs); err != nil {
|
|
return rbs, err
|
|
}
|
|
return rbs, nil
|
|
}
|
|
|
|
func (s *service) GetBindingByClusterNameAndUserName(clusterName string, userName string, options common.DBOptions) (*v1Cluster.Binding, error) {
|
|
db := s.GetDB(options)
|
|
query := db.Select(q.And(q.Eq("ClusterRef", clusterName), q.Eq("UserRef", userName)))
|
|
var rb v1Cluster.Binding
|
|
if err := query.First(&rb); err != nil {
|
|
return nil, err
|
|
}
|
|
return &rb, nil
|
|
}
|
|
|
|
func (s *service) CreateClusterBinding(binding *v1Cluster.Binding, options common.DBOptions) error {
|
|
db := s.GetDB(options)
|
|
binding.UUID = uuid.New().String()
|
|
binding.CreateAt = time.Now()
|
|
binding.UpdateAt = time.Now()
|
|
return db.Save(binding)
|
|
}
|
|
|
|
func (s *service) GetClusterBindingByClusterName(clusterName string, options common.DBOptions) ([]v1Cluster.Binding, error) {
|
|
db := s.GetDB(options)
|
|
query := db.Select(q.Eq("ClusterRef", clusterName))
|
|
var rbs []v1Cluster.Binding
|
|
if err := query.Find(&rbs); err != nil {
|
|
return rbs, err
|
|
}
|
|
return rbs, nil
|
|
}
|
|
|
|
func (s *service) Delete(name string, options common.DBOptions) error {
|
|
db := s.GetDB(options)
|
|
var binding v1Cluster.Binding
|
|
if err := db.One("Name", name, &binding); err != nil {
|
|
return err
|
|
}
|
|
if binding.BuiltIn {
|
|
return errors.New("can not delete this resource,because it created by system")
|
|
}
|
|
return db.DeleteStruct(&binding)
|
|
}
|