feat: optimized dependency api

This commit is contained in:
Marvin Zhang
2024-11-04 00:16:42 +08:00
parent 9f891a3f7b
commit 73674832b8
8 changed files with 31 additions and 42 deletions

View File

@@ -57,6 +57,8 @@ func GetFilter(c *gin.Context) (f *entity.Filter, err error) {
items = append(items, item)
}
conditions[i].Value = items
default:
return nil, errors2.New("invalid type")
}
}

View File

@@ -2,13 +2,10 @@ package entity
import "go.mongodb.org/mongo-driver/bson/primitive"
type DependencyResult struct {
type DependencyRepo struct {
Name string `json:"name,omitempty" bson:"name,omitempty"`
NodeIds []primitive.ObjectID `json:"node_ids,omitempty" bson:"node_ids,omitempty"`
Versions []string `json:"versions,omitempty" bson:"versions,omitempty"`
LatestVersion string `json:"latest_version" bson:"latest_version"`
Count int `json:"count,omitempty" bson:"count,omitempty"`
Upgradable bool `json:"upgradable" bson:"upgradable"`
Downgradable bool `json:"downgradable" bson:"downgradable"`
Installable bool `json:"installable" bson:"installable"`
Type string `json:"type" bson:"type"`
}

View File

@@ -151,21 +151,15 @@ func (svr NodeServiceServer) GetSubscribeStream(nodeId primitive.ObjectID) (stre
var nodeSvr *NodeServiceServer
var nodeSvrOnce = new(sync.Once)
func NewNodeServiceServer() (res *NodeServiceServer, err error) {
func NewNodeServiceServer() *NodeServiceServer {
if nodeSvr != nil {
return nodeSvr, nil
return nodeSvr
}
nodeSvrOnce.Do(func() {
nodeSvr = &NodeServiceServer{
subs: make(map[primitive.ObjectID]grpc.NodeService_SubscribeServer),
}
nodeSvr.cfgSvc = nodeconfig.GetNodeConfigService()
if err != nil {
log.Errorf("[NodeServiceServer] error: %s", err.Error())
}
})
if err != nil {
return nil, err
}
return nodeSvr, nil
return nodeSvr
}

View File

@@ -16,6 +16,7 @@ import (
"github.com/spf13/viper"
"google.golang.org/grpc"
"net"
"sync"
)
type GrpcServer struct {
@@ -49,9 +50,7 @@ func (svr *GrpcServer) SetConfigPath(path string) {
func (svr *GrpcServer) Init() (err error) {
// register
if err := svr.register(); err != nil {
return err
}
svr.register()
return nil
}
@@ -131,16 +130,14 @@ func NewGrpcServer() (svr *GrpcServer, err error) {
if viper.GetString("grpc.server.address") != "" {
svr.address, err = entity.NewAddressFromString(viper.GetString("grpc.server.address"))
if err != nil {
return nil, err
log.Fatalf("[NewGrpcServer] failed to parse grpc server address: %v", err)
panic(err)
}
}
svr.nodeCfgSvc = nodeconfig.GetNodeConfigService()
svr.NodeSvr, err = NewNodeServiceServer()
if err != nil {
return nil, err
}
svr.NodeSvr = NewNodeServiceServer()
svr.ModelBaseServiceSvr = NewModelBaseServiceServer()
svr.TaskSvr, err = NewTaskServiceServer()
if err != nil {
@@ -167,22 +164,20 @@ func NewGrpcServer() (svr *GrpcServer, err error) {
)
// initialize
if err := svr.Init(); err != nil {
return nil, err
}
svr.Init()
return svr, nil
}
var _serverV2 *GrpcServer
var _server *GrpcServer
var _serverOnce sync.Once
func GetGrpcServerV2() (svr *GrpcServer, err error) {
if _serverV2 != nil {
return _serverV2, nil
}
_serverV2, err = NewGrpcServer()
func GetGrpcServer() (svr *GrpcServer, err error) {
_serverOnce.Do(func() {
_server, err = NewGrpcServer()
})
if err != nil {
return nil, err
}
return _serverV2, nil
return _server, nil
}

View File

@@ -1,18 +1,18 @@
package models
import (
"github.com/crawlab-team/crawlab/core/entity"
"go.mongodb.org/mongo-driver/bson/primitive"
)
type DependencyV2 struct {
any `collection:"dependencies"`
BaseModelV2[DependencyV2] `bson:",inline"`
Name string `json:"name" bson:"name"`
Description string `json:"description" bson:"description"`
NodeId primitive.ObjectID `json:"node_id" bson:"node_id"`
Type string `json:"type" bson:"type"`
LatestVersion string `json:"latest_version" bson:"latest_version"`
Version string `json:"version" bson:"version"`
Result entity.DependencyResult `json:"result" bson:"-"`
Name string `json:"name" bson:"name"`
Description string `json:"description" bson:"description"`
NodeId primitive.ObjectID `json:"node_id" bson:"node_id"`
Type string `json:"type" bson:"type"`
LatestVersion string `json:"latest_version" bson:"latest_version"`
Version string `json:"version" bson:"version"`
NodeIds []primitive.ObjectID `json:"node_ids,omitempty" bson:"-"`
Versions []string `json:"versions,omitempty" bson:"-"`
}

View File

@@ -333,7 +333,7 @@ func newMasterServiceV2() (res *MasterService, err error) {
svc.cfgSvc = config.GetNodeConfigService()
// grpc server
svc.server, err = server.GetGrpcServerV2()
svc.server, err = server.GetGrpcServer()
if err != nil {
return nil, err
}

View File

@@ -241,7 +241,7 @@ func NewTaskSchedulerService() (svc2 *Service, err error) {
interval: 5 * time.Second,
}
svc.nodeCfgSvc = nodeconfig.GetNodeConfigService()
svc.svr, err = server.GetGrpcServerV2()
svc.svr, err = server.GetGrpcServer()
if err != nil {
log.Errorf("failed to get grpc server: %v", err)
return nil, err

View File

@@ -966,6 +966,7 @@ github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGi
github.com/konsorten/go-windows-terminal-sequences v1.0.2 h1:DB17ag19krx9CFsz4o3enTrPXyIXCl+2iCXH/aMAp9s=
github.com/kr/fs v0.1.0 h1:Jskdu9ieNAYnjxsi0LbQp1ulIKZV1LAFgK1tWhpZgl8=
github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515 h1:T+h1c/A9Gawja4Y9mFVWj2vyii2bbUNDw3kt9VxK2EY=
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
github.com/kr/pty v1.1.1 h1:VkoXIwSboBpnk99O/KFauAEILuNHv5DVFKZMBN/gUgw=
github.com/kr/pty v1.1.8 h1:AkaSdXYQOWeaO3neb8EM634ahkXXe3jYbVh/F9lq+GI=
github.com/linxGnu/gumble v1.0.0 h1:OAJud8Hy4rmV9I5p/KTRiVpwwklMTd9Ankza3Mz7a4M=