dragonfly/manager/service/service.go

92 lines
3.8 KiB
Go

package service
import (
"d7y.io/dragonfly/v2/manager/cache"
"d7y.io/dragonfly/v2/manager/database"
"d7y.io/dragonfly/v2/manager/model"
"d7y.io/dragonfly/v2/manager/tasks"
"d7y.io/dragonfly/v2/manager/types"
"github.com/casbin/casbin/v2"
"github.com/gin-gonic/gin"
"github.com/go-redis/redis/v8"
"gorm.io/gorm"
)
type REST interface {
SignIn(json types.SignInRequest) (*model.User, error)
SignUp(json types.SignUpRequest) (*model.User, error)
GetPermissionGroups(g *gin.Engine) types.PermissionGroups
CreatePermission(json types.PolicyRequest) error
DestroyPermission(json types.PolicyRequest) error
GetRolesForUser(subject string) ([]map[string]string, error)
HasRoleForUser(subject, object, action string) (bool, error)
CreateCDNCluster(types.CreateCDNClusterRequest) (*model.CDNCluster, error)
CreateCDNClusterWithSecurityGroupDomain(types.CreateCDNClusterRequest) (*model.CDNCluster, error)
DestroyCDNCluster(uint) error
UpdateCDNCluster(uint, types.UpdateCDNClusterRequest) (*model.CDNCluster, error)
UpdateCDNClusterWithSecurityGroupDomain(uint, types.UpdateCDNClusterRequest) (*model.CDNCluster, error)
GetCDNCluster(uint) (*model.CDNCluster, error)
GetCDNClusters(types.GetCDNClustersQuery) (*[]model.CDNCluster, error)
CDNClusterTotalCount(types.GetCDNClustersQuery) (int64, error)
AddCDNToCDNCluster(uint, uint) error
AddSchedulerClusterToCDNCluster(uint, uint) error
CreateCDN(types.CreateCDNRequest) (*model.CDN, error)
DestroyCDN(uint) error
UpdateCDN(uint, types.UpdateCDNRequest) (*model.CDN, error)
GetCDN(uint) (*model.CDN, error)
GetCDNs(types.GetCDNsQuery) (*[]model.CDN, error)
CDNTotalCount(types.GetCDNsQuery) (int64, error)
CreateSchedulerCluster(types.CreateSchedulerClusterRequest) (*model.SchedulerCluster, error)
CreateSchedulerClusterWithSecurityGroupDomain(types.CreateSchedulerClusterRequest) (*model.SchedulerCluster, error)
DestroySchedulerCluster(uint) error
UpdateSchedulerCluster(uint, types.UpdateSchedulerClusterRequest) (*model.SchedulerCluster, error)
UpdateSchedulerClusterWithSecurityGroupDomain(uint, types.UpdateSchedulerClusterRequest) (*model.SchedulerCluster, error)
GetSchedulerCluster(uint) (*model.SchedulerCluster, error)
GetSchedulerClusters(types.GetSchedulerClustersQuery) (*[]model.SchedulerCluster, error)
SchedulerClusterTotalCount(types.GetSchedulerClustersQuery) (int64, error)
AddSchedulerToSchedulerCluster(uint, uint) error
CreateScheduler(types.CreateSchedulerRequest) (*model.Scheduler, error)
DestroyScheduler(uint) error
UpdateScheduler(uint, types.UpdateSchedulerRequest) (*model.Scheduler, error)
GetScheduler(uint) (*model.Scheduler, error)
GetSchedulers(types.GetSchedulersQuery) (*[]model.Scheduler, error)
SchedulerTotalCount(types.GetSchedulersQuery) (int64, error)
CreateSecurityGroup(types.CreateSecurityGroupRequest) (*model.SecurityGroup, error)
DestroySecurityGroup(uint) error
UpdateSecurityGroup(uint, types.UpdateSecurityGroupRequest) (*model.SecurityGroup, error)
GetSecurityGroup(uint) (*model.SecurityGroup, error)
GetSecurityGroups(types.GetSecurityGroupsQuery) (*[]model.SecurityGroup, error)
SecurityGroupTotalCount(types.GetSecurityGroupsQuery) (int64, error)
AddSchedulerClusterToSecurityGroup(uint, uint) error
AddCDNClusterToSecurityGroup(uint, uint) error
CreatePreheat(types.CreatePreheatRequest) (*types.Preheat, error)
GetPreheat(string) (*types.Preheat, error)
}
type rest struct {
db *gorm.DB
rdb *redis.Client
cache *cache.Cache
tasks tasks.Task
enforcer *casbin.Enforcer
}
// NewREST returns a new REST instence
func NewREST(database *database.Database, cache *cache.Cache, tasks tasks.Task, enforcer *casbin.Enforcer) REST {
return &rest{
db: database.DB,
rdb: database.RDB,
cache: cache,
tasks: tasks,
enforcer: enforcer,
}
}