mirror of
				https://github.com/TeaOSLab/EdgeAPI.git
				synced 2025-11-04 16:00:24 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			136 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			136 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
 | 
						|
 | 
						|
package services
 | 
						|
 | 
						|
import (
 | 
						|
	"context"
 | 
						|
	"github.com/TeaOSLab/EdgeAPI/internal/db/models/nameservers"
 | 
						|
	"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
 | 
						|
)
 | 
						|
 | 
						|
// NSClusterService 域名服务集群相关服务
 | 
						|
type NSClusterService struct {
 | 
						|
	BaseService
 | 
						|
}
 | 
						|
 | 
						|
// CreateNSCluster 创建集群
 | 
						|
func (this *NSClusterService) CreateNSCluster(ctx context.Context, req *pb.CreateNSClusterRequest) (*pb.CreateNSClusterResponse, error) {
 | 
						|
	_, err := this.ValidateAdmin(ctx, 0)
 | 
						|
	if err != nil {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
	var tx = this.NullTx()
 | 
						|
	clusterId, err := nameservers.SharedNSClusterDAO.CreateCluster(tx, req.Name)
 | 
						|
	if err != nil {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
	return &pb.CreateNSClusterResponse{NsClusterId: clusterId}, nil
 | 
						|
}
 | 
						|
 | 
						|
// UpdateNSCluster 修改集群
 | 
						|
func (this *NSClusterService) UpdateNSCluster(ctx context.Context, req *pb.UpdateNSClusterRequest) (*pb.RPCSuccess, error) {
 | 
						|
	_, err := this.ValidateAdmin(ctx, 0)
 | 
						|
	if err != nil {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
	var tx = this.NullTx()
 | 
						|
	err = nameservers.SharedNSClusterDAO.UpdateCluster(tx, req.NsClusterId, req.Name, req.IsOn)
 | 
						|
	if err != nil {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
	return this.Success()
 | 
						|
}
 | 
						|
 | 
						|
// DeleteNSCluster 删除集群
 | 
						|
func (this *NSClusterService) DeleteNSCluster(ctx context.Context, req *pb.DeleteNSCluster) (*pb.RPCSuccess, error) {
 | 
						|
	_, err := this.ValidateAdmin(ctx, 0)
 | 
						|
	if err != nil {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
	var tx = this.NullTx()
 | 
						|
	err = nameservers.SharedNSClusterDAO.DisableNSCluster(tx, req.NsClusterId)
 | 
						|
	if err != nil {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
	return this.Success()
 | 
						|
}
 | 
						|
 | 
						|
// FindEnabledNSCluster 查找单个可用集群信息
 | 
						|
func (this *NSClusterService) FindEnabledNSCluster(ctx context.Context, req *pb.FindEnabledNSClusterRequest) (*pb.FindEnabledNSClusterResponse, error) {
 | 
						|
	_, err := this.ValidateAdmin(ctx, 0)
 | 
						|
	if err != nil {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
	var tx = this.NullTx()
 | 
						|
	cluster, err := nameservers.SharedNSClusterDAO.FindEnabledNSCluster(tx, req.NsClusterId)
 | 
						|
	if err != nil {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
	if cluster == nil {
 | 
						|
		return &pb.FindEnabledNSClusterResponse{NsCluster: nil}, nil
 | 
						|
	}
 | 
						|
	return &pb.FindEnabledNSClusterResponse{NsCluster: &pb.NSCluster{
 | 
						|
		Id:   int64(cluster.Id),
 | 
						|
		IsOn: cluster.IsOn == 1,
 | 
						|
		Name: cluster.Name,
 | 
						|
	}}, nil
 | 
						|
}
 | 
						|
 | 
						|
// CountAllEnabledNSClusters 计算所有可用集群的数量
 | 
						|
func (this *NSClusterService) CountAllEnabledNSClusters(ctx context.Context, req *pb.CountAllEnabledNSClustersRequest) (*pb.RPCCountResponse, error) {
 | 
						|
	_, err := this.ValidateAdmin(ctx, 0)
 | 
						|
	if err != nil {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
	var tx = this.NullTx()
 | 
						|
	count, err := nameservers.SharedNSClusterDAO.CountAllEnabledClusters(tx)
 | 
						|
	if err != nil {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
	return this.SuccessCount(count)
 | 
						|
}
 | 
						|
 | 
						|
// ListEnabledNSClusters 列出单页可用集群
 | 
						|
func (this *NSClusterService) ListEnabledNSClusters(ctx context.Context, req *pb.ListEnabledNSClustersRequest) (*pb.ListEnabledNSClustersResponse, error) {
 | 
						|
	_, err := this.ValidateAdmin(ctx, 0)
 | 
						|
	if err != nil {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
	var tx = this.NullTx()
 | 
						|
	clusters, err := nameservers.SharedNSClusterDAO.ListEnabledNSClusters(tx, req.Offset, req.Size)
 | 
						|
	if err != nil {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
	var pbClusters = []*pb.NSCluster{}
 | 
						|
	for _, cluster := range clusters {
 | 
						|
		pbClusters = append(pbClusters, &pb.NSCluster{
 | 
						|
			Id:   int64(cluster.Id),
 | 
						|
			IsOn: cluster.IsOn == 1,
 | 
						|
			Name: cluster.Name,
 | 
						|
		})
 | 
						|
	}
 | 
						|
	return &pb.ListEnabledNSClustersResponse{NsClusters: pbClusters}, nil
 | 
						|
}
 | 
						|
 | 
						|
// FindAllEnabledNSClusters 查找所有可用集群
 | 
						|
func (this *NSClusterService) FindAllEnabledNSClusters(ctx context.Context, req *pb.FindAllEnabledNSClustersRequest) (*pb.FindAllEnabledNSClustersResponse, error) {
 | 
						|
	_, err := this.ValidateAdmin(ctx, 0)
 | 
						|
	if err != nil {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
	var tx = this.NullTx()
 | 
						|
	clusters, err := nameservers.SharedNSClusterDAO.FindAllEnabledNSClusters(tx)
 | 
						|
	if err != nil {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
	var pbClusters = []*pb.NSCluster{}
 | 
						|
	for _, cluster := range clusters {
 | 
						|
		pbClusters = append(pbClusters, &pb.NSCluster{
 | 
						|
			Id:   int64(cluster.Id),
 | 
						|
			IsOn: cluster.IsOn == 1,
 | 
						|
			Name: cluster.Name,
 | 
						|
		})
 | 
						|
	}
 | 
						|
	return &pb.FindAllEnabledNSClustersResponse{NsClusters: pbClusters}, nil
 | 
						|
}
 |