From 73674832b8f174ea7d2882f80af6621d07eca9c9 Mon Sep 17 00:00:00 2001 From: Marvin Zhang Date: Mon, 4 Nov 2024 00:16:42 +0800 Subject: [PATCH] feat: optimized dependency api --- core/controllers/utils_filter.go | 2 ++ core/entity/dependency.go | 7 ++---- core/grpc/server/node_service_server.go | 12 +++------- core/grpc/server/server.go | 31 +++++++++++-------------- core/models/models/v2/dependency_v2.go | 16 ++++++------- core/node/service/master_service.go | 2 +- core/task/scheduler/service.go | 2 +- go.work.sum | 1 + 8 files changed, 31 insertions(+), 42 deletions(-) diff --git a/core/controllers/utils_filter.go b/core/controllers/utils_filter.go index aee3129d..08e00971 100644 --- a/core/controllers/utils_filter.go +++ b/core/controllers/utils_filter.go @@ -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") } } diff --git a/core/entity/dependency.go b/core/entity/dependency.go index 55f9c6ad..4341a7b1 100644 --- a/core/entity/dependency.go +++ b/core/entity/dependency.go @@ -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"` } diff --git a/core/grpc/server/node_service_server.go b/core/grpc/server/node_service_server.go index 46aa42eb..d7e8dc3a 100644 --- a/core/grpc/server/node_service_server.go +++ b/core/grpc/server/node_service_server.go @@ -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 } diff --git a/core/grpc/server/server.go b/core/grpc/server/server.go index 5915390c..ef58fc3b 100644 --- a/core/grpc/server/server.go +++ b/core/grpc/server/server.go @@ -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 } diff --git a/core/models/models/v2/dependency_v2.go b/core/models/models/v2/dependency_v2.go index 6d8d6039..2d1b7aae 100644 --- a/core/models/models/v2/dependency_v2.go +++ b/core/models/models/v2/dependency_v2.go @@ -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:"-"` } diff --git a/core/node/service/master_service.go b/core/node/service/master_service.go index 0f39cf7d..5c42c117 100644 --- a/core/node/service/master_service.go +++ b/core/node/service/master_service.go @@ -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 } diff --git a/core/task/scheduler/service.go b/core/task/scheduler/service.go index 18a78757..f7cc5974 100644 --- a/core/task/scheduler/service.go +++ b/core/task/scheduler/service.go @@ -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 diff --git a/go.work.sum b/go.work.sum index 285c709c..7168514d 100644 --- a/go.work.sum +++ b/go.work.sum @@ -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=