Skip to content

Commit

Permalink
feat: updated grpc proto
Browse files Browse the repository at this point in the history
  • Loading branch information
tikazyq committed Jun 14, 2024
1 parent e5b20af commit 08d9f4f
Show file tree
Hide file tree
Showing 6 changed files with 111 additions and 14 deletions.
2 changes: 1 addition & 1 deletion core/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ require (
github.com/cenkalti/backoff/v4 v4.1.0
github.com/crawlab-team/crawlab/db v0.0.0-20240614095218-7b4ee8399ab0
github.com/crawlab-team/crawlab/fs v0.0.0-20240614095218-7b4ee8399ab0
github.com/crawlab-team/crawlab/grpc v0.0.0-20240614095218-7b4ee8399ab0
github.com/crawlab-team/crawlab/grpc v0.0.0-20240614111723-e5b20af9a40b
github.com/crawlab-team/crawlab/template-parser v0.0.0-20240614095218-7b4ee8399ab0
github.com/crawlab-team/crawlab/trace v0.0.0-20240614095218-7b4ee8399ab0
github.com/crawlab-team/crawlab/vcs v0.0.0-20240614095218-7b4ee8399ab0
Expand Down
81 changes: 68 additions & 13 deletions core/grpc/server/dependencies_server_v2.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,29 +2,84 @@ package server

import (
"context"
grpc "github.com/crawlab-team/crawlab/grpc"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
"github.com/crawlab-team/crawlab/core/models/models"
"github.com/crawlab-team/crawlab/core/models/service"
"github.com/crawlab-team/crawlab/grpc"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/bson/primitive"
"io"
"sync"
)

type DependenciesServerV2 struct {
grpc.UnimplementedDependencyServiceV2Server
grpc.UnimplementedDependenciesServiceV2Server
mu *sync.Mutex
streams map[string]grpc.DependenciesServiceV2_ConnectServer
}

func (svr DependenciesServerV2) Connect(stream grpc.DependencyServiceV2_ConnectServer) (err error) {
return status.Errorf(codes.Unimplemented, "method Connect not implemented")
func (svr DependenciesServerV2) Connect(stream grpc.DependenciesServiceV2_ConnectServer) (err error) {
svr.mu.Lock()
defer svr.mu.Unlock()
req, err := stream.Recv()
if err != nil {
return err
}
svr.streams[req.NodeKey] = stream
return nil
}

func (svr DependenciesServerV2) Sync(ctx context.Context, request *grpc.DependenciesServiceV2SyncRequest) (response *grpc.Response, err error) {
return nil, status.Errorf(codes.Unimplemented, "method Sync not implemented")
n, err := service.NewModelServiceV2[models.NodeV2]().GetOne(bson.M{"key": request.NodeKey}, nil)
if err != nil {
return nil, err
}
var deps []models.DependencyV2
for _, dep := range request.Dependencies {
deps = append(deps, models.DependencyV2{
Name: dep.Name,
NodeId: n.Id,
Type: request.Lang,
Version: dep.Version,
})
}
_, err = service.NewModelServiceV2[models.DependencyV2]().InsertMany(deps)
if err != nil {
return nil, err
}
return nil, nil
}

func (svr DependenciesServerV2) Install(stream grpc.DependencyServiceV2_InstallServer) (err error) {
return status.Errorf(codes.Unimplemented, "method Install not implemented")
}

func (svr DependenciesServerV2) UninstallDependencies(stream grpc.DependencyServiceV2_UninstallDependenciesServer) (err error) {
return status.Errorf(codes.Unimplemented, "method UninstallDependencies not implemented")
func (svr DependenciesServerV2) UpdateTaskLog(stream grpc.DependenciesServiceV2_UpdateTaskLogServer) (err error) {
var t *models.DependencyTaskV2
for {
req, err := stream.Recv()
if err == io.EOF {
// all messages have been received
return stream.SendAndClose(&grpc.Response{Message: "update task log finished"})
}
if err != nil {
return err
}
taskId, err := primitive.ObjectIDFromHex(req.TaskId)
if err != nil {
return err
}
if t == nil {
t, err = service.NewModelServiceV2[models.DependencyTaskV2]().GetById(taskId)
if err != nil {
return err
}
}
l := models.DependencyLogV2{
TaskId: taskId,
Content: req.Content,
}
l.SetCreated(t.CreatedBy)
_, err = service.NewModelServiceV2[models.DependencyLogV2]().InsertOne(l)
if err != nil {
return err
}
}
}

func NewDependenciesServerV2() *DependenciesServerV2 {
Expand Down
3 changes: 3 additions & 0 deletions core/grpc/server/model_base_service_v2_server.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,10 @@ var (
*new(models.TestModel),
*new(models.DataCollectionV2),
*new(models.DataSourceV2),
*new(models.DependencyV2),
*new(models.DependencyLogV2),
*new(models.DependencySettingV2),
*new(models.DependencyTaskV2),
*new(models.EnvironmentV2),
*new(models.GitV2),
*new(models.NodeV2),
Expand Down
10 changes: 10 additions & 0 deletions core/models/models/dependency_log_v2.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package models

import "go.mongodb.org/mongo-driver/bson/primitive"

type DependencyLogV2 struct {
any `collection:"dependency_logs"`
BaseModelV2[DependencyLogV2] `bson:",inline"`
TaskId primitive.ObjectID `json:"task_id" bson:"task_id"`
Content string `json:"content" bson:"content"`
}
15 changes: 15 additions & 0 deletions core/models/models/dependency_task_v2.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package models

import "go.mongodb.org/mongo-driver/bson/primitive"

type DependencyTaskV2 struct {
any `collection:"dependency_tasks"`
BaseModelV2[DependencyTaskV2] `bson:",inline"`
Status string `json:"status" bson:"status"`
Error string `json:"error" bson:"error"`
SettingId primitive.ObjectID `json:"setting_id" bson:"setting_id"`
Type string `json:"type" bson:"type"`
NodeId primitive.ObjectID `json:"node_id" bson:"node_id"`
Action string `json:"action" bson:"action"`
DepNames []string `json:"dep_names" bson:"dep_names"`
}
14 changes: 14 additions & 0 deletions core/models/models/dependency_v2.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package models

import "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"`
}

0 comments on commit 08d9f4f

Please sign in to comment.