mirror of
https://github.com/crawlab-team/crawlab.git
synced 2026-02-01 18:20:17 +01:00
feat: added modules
This commit is contained in:
67
core/grpc/server/model_delegate_server.go
Normal file
67
core/grpc/server/model_delegate_server.go
Normal file
@@ -0,0 +1,67 @@
|
||||
package server
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/crawlab-team/crawlab/core/errors"
|
||||
"github.com/crawlab-team/crawlab/core/interfaces"
|
||||
"github.com/crawlab-team/crawlab/core/models/delegate"
|
||||
grpc "github.com/crawlab-team/crawlab/grpc"
|
||||
)
|
||||
|
||||
type ModelDelegateServer struct {
|
||||
grpc.UnimplementedModelDelegateServer
|
||||
}
|
||||
|
||||
// Do and perform an RPC action of constants.Delegate
|
||||
func (svr ModelDelegateServer) Do(ctx context.Context, req *grpc.Request) (res *grpc.Response, err error) {
|
||||
// bind message
|
||||
obj, msg, err := NewModelDelegateBinder(req).BindWithDelegateMessage()
|
||||
if err != nil {
|
||||
return HandleError(err)
|
||||
}
|
||||
|
||||
// convert to model
|
||||
doc, ok := obj.(interfaces.Model)
|
||||
if !ok {
|
||||
return HandleError(errors.ErrorModelInvalidType)
|
||||
}
|
||||
|
||||
// model delegate
|
||||
d := delegate.NewModelDelegate(doc)
|
||||
|
||||
// apply method
|
||||
switch msg.GetMethod() {
|
||||
case interfaces.ModelDelegateMethodAdd:
|
||||
err = d.Add()
|
||||
case interfaces.ModelDelegateMethodSave:
|
||||
err = d.Save()
|
||||
case interfaces.ModelDelegateMethodDelete:
|
||||
err = d.Delete()
|
||||
case interfaces.ModelDelegateMethodGetArtifact, interfaces.ModelDelegateMethodRefresh:
|
||||
err = d.Refresh()
|
||||
}
|
||||
if err != nil {
|
||||
return HandleError(err)
|
||||
}
|
||||
|
||||
// model
|
||||
m := d.GetModel()
|
||||
if msg.GetMethod() == interfaces.ModelDelegateMethodGetArtifact {
|
||||
m, err = d.GetArtifact()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
// json bytes
|
||||
data, err := d.ToBytes(m)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return HandleSuccessWithData(data)
|
||||
}
|
||||
|
||||
func NewModelDelegateServer() (svr *ModelDelegateServer) {
|
||||
return &ModelDelegateServer{}
|
||||
}
|
||||
Reference in New Issue
Block a user