refactor(workflow): Move the database component in the Workflow package into the common crossdomain package (#704)

This commit is contained in:
Ryo
2025-08-12 15:42:58 +08:00
committed by GitHub
parent e7011f2549
commit 9ff065cebd
29 changed files with 834 additions and 1353 deletions

View File

@@ -32,13 +32,12 @@ import (
"github.com/stretchr/testify/assert"
"go.uber.org/mock/gomock"
"github.com/coze-dev/coze-studio/backend/infra/contract/coderunner"
crossmodel "github.com/coze-dev/coze-studio/backend/api/model/crossdomain/database"
crossdatabase "github.com/coze-dev/coze-studio/backend/crossdomain/contract/database"
"github.com/coze-dev/coze-studio/backend/crossdomain/contract/database/databasemock"
"github.com/coze-dev/coze-studio/backend/crossdomain/impl/code"
userentity "github.com/coze-dev/coze-studio/backend/domain/user/entity"
"github.com/coze-dev/coze-studio/backend/domain/workflow"
"github.com/coze-dev/coze-studio/backend/domain/workflow/crossdomain/code"
crossdatabase "github.com/coze-dev/coze-studio/backend/domain/workflow/crossdomain/database"
"github.com/coze-dev/coze-studio/backend/domain/workflow/crossdomain/database/databasemock"
"github.com/coze-dev/coze-studio/backend/domain/workflow/crossdomain/knowledge"
"github.com/coze-dev/coze-studio/backend/domain/workflow/crossdomain/knowledge/knowledgemock"
"github.com/coze-dev/coze-studio/backend/domain/workflow/crossdomain/model"
@@ -50,6 +49,7 @@ import (
"github.com/coze-dev/coze-studio/backend/domain/workflow/entity/vo"
"github.com/coze-dev/coze-studio/backend/domain/workflow/internal/compose"
"github.com/coze-dev/coze-studio/backend/domain/workflow/internal/execute"
"github.com/coze-dev/coze-studio/backend/infra/contract/coderunner"
mockWorkflow "github.com/coze-dev/coze-studio/backend/internal/mock/domain/workflow"
mockcode "github.com/coze-dev/coze-studio/backend/internal/mock/domain/workflow/crossdomain/code"
"github.com/coze-dev/coze-studio/backend/internal/testutil"
@@ -105,10 +105,10 @@ func TestIntentDetectorAndDatabase(t *testing.T) {
}
mockModelManager.EXPECT().GetModel(gomock.Any(), gomock.Any()).Return(chatModel, nil, nil).AnyTimes()
mockDatabaseOperator := databasemock.NewMockDatabaseOperator(ctrl)
mockDatabaseOperator := databasemock.NewMockDatabase(ctrl)
n := int64(2)
resp := &crossdatabase.Response{
Objects: []crossdatabase.Object{
resp := &crossmodel.Response{
Objects: []crossmodel.Object{
{
"v2": "123",
},
@@ -119,7 +119,7 @@ func TestIntentDetectorAndDatabase(t *testing.T) {
RowNumber: &n,
}
mockDatabaseOperator.EXPECT().Execute(gomock.Any(), gomock.Any()).Return(resp, nil).AnyTimes()
mockey.Mock(crossdatabase.GetDatabaseOperator).Return(mockDatabaseOperator).Build()
crossdatabase.SetDefaultSVC(mockDatabaseOperator)
workflowSC, err := CanvasToWorkflowSchema(ctx, c)
assert.NoError(t, err)
@@ -144,44 +144,44 @@ func TestIntentDetectorAndDatabase(t *testing.T) {
})
}
func mockUpdate(t *testing.T) func(context.Context, *crossdatabase.UpdateRequest) (*crossdatabase.Response, error) {
return func(ctx context.Context, req *crossdatabase.UpdateRequest) (*crossdatabase.Response, error) {
assert.Equal(t, req.ConditionGroup.Conditions[0], &crossdatabase.Condition{
func mockUpdate(t *testing.T) func(context.Context, *crossmodel.UpdateRequest) (*crossmodel.Response, error) {
return func(ctx context.Context, req *crossmodel.UpdateRequest) (*crossmodel.Response, error) {
assert.Equal(t, req.ConditionGroup.Conditions[0], &crossmodel.ConditionStr{
Left: "v2",
Operator: "=",
Right: int64(1),
})
assert.Equal(t, req.ConditionGroup.Conditions[1], &crossdatabase.Condition{
assert.Equal(t, req.ConditionGroup.Conditions[1], &crossmodel.ConditionStr{
Left: "v1",
Operator: "=",
Right: "abc",
})
assert.Equal(t, req.ConditionGroup.Relation, crossdatabase.ClauseRelationAND)
assert.Equal(t, req.ConditionGroup.Relation, crossmodel.ClauseRelationAND)
assert.Equal(t, req.Fields, map[string]interface{}{
"1783392627713": int64(123),
})
return &crossdatabase.Response{}, nil
return &crossmodel.Response{}, nil
}
}
func mockInsert(t *testing.T) func(ctx context.Context, request *crossdatabase.InsertRequest) (*crossdatabase.Response, error) {
return func(ctx context.Context, req *crossdatabase.InsertRequest) (*crossdatabase.Response, error) {
func mockInsert(t *testing.T) func(ctx context.Context, request *crossmodel.InsertRequest) (*crossmodel.Response, error) {
return func(ctx context.Context, req *crossmodel.InsertRequest) (*crossmodel.Response, error) {
v := req.Fields["1785960530945"]
assert.Equal(t, v, int64(123))
vs := req.Fields["1783122026497"]
assert.Equal(t, vs, "input for database curd")
n := int64(10)
return &crossdatabase.Response{
return &crossmodel.Response{
RowNumber: &n,
}, nil
}
}
func mockQuery(t *testing.T) func(ctx context.Context, request *crossdatabase.QueryRequest) (*crossdatabase.Response, error) {
return func(ctx context.Context, req *crossdatabase.QueryRequest) (*crossdatabase.Response, error) {
assert.Equal(t, req.ConditionGroup.Conditions[0], &crossdatabase.Condition{
func mockQuery(t *testing.T) func(ctx context.Context, request *crossmodel.QueryRequest) (*crossmodel.Response, error) {
return func(ctx context.Context, req *crossmodel.QueryRequest) (*crossmodel.Response, error) {
assert.Equal(t, req.ConditionGroup.Conditions[0], &crossmodel.ConditionStr{
Left: "v1",
Operator: "=",
Right: "abc",
@@ -191,26 +191,26 @@ func mockQuery(t *testing.T) func(ctx context.Context, request *crossdatabase.Qu
"1783122026497", "1784288924673", "1783392627713",
})
n := int64(10)
return &crossdatabase.Response{
return &crossmodel.Response{
RowNumber: &n,
Objects: []crossdatabase.Object{
Objects: []crossmodel.Object{
{"v1": "vv"},
},
}, nil
}
}
func mockDelete(t *testing.T) func(context.Context, *crossdatabase.DeleteRequest) (*crossdatabase.Response, error) {
return func(ctx context.Context, req *crossdatabase.DeleteRequest) (*crossdatabase.Response, error) {
func mockDelete(t *testing.T) func(context.Context, *crossmodel.DeleteRequest) (*crossmodel.Response, error) {
return func(ctx context.Context, req *crossmodel.DeleteRequest) (*crossmodel.Response, error) {
nn := int64(10)
assert.Equal(t, req.ConditionGroup.Conditions[0], &crossdatabase.Condition{
assert.Equal(t, req.ConditionGroup.Conditions[0], &crossmodel.ConditionStr{
Left: "v2",
Operator: "=",
Right: nn,
})
n := int64(1)
return &crossdatabase.Response{
return &crossmodel.Response{
RowNumber: &n,
}, nil
}
@@ -228,8 +228,8 @@ func TestDatabaseCURD(t *testing.T) {
_ = ctx
ctrl := gomock.NewController(t)
defer ctrl.Finish()
mockDatabaseOperator := databasemock.NewMockDatabaseOperator(ctrl)
mockey.Mock(crossdatabase.GetDatabaseOperator).Return(mockDatabaseOperator).Build()
mockDatabaseOperator := databasemock.NewMockDatabase(ctrl)
mockey.Mock(crossdatabase.DefaultSVC).Return(mockDatabaseOperator).Build()
mockDatabaseOperator.EXPECT().Query(gomock.Any(), gomock.Any()).DoAndReturn(mockQuery(t))
mockDatabaseOperator.EXPECT().Update(gomock.Any(), gomock.Any()).DoAndReturn(mockUpdate(t))
mockDatabaseOperator.EXPECT().Insert(gomock.Any(), gomock.Any()).DoAndReturn(mockInsert(t))