Skip to content

Commit fa42026

Browse files
authored
Merge pull request #2422 from actiontech/fix-issue1532-1
Fix issue1532 1
2 parents 45b0dc3 + 211f91f commit fa42026

File tree

7 files changed

+53
-23
lines changed

7 files changed

+53
-23
lines changed

sqle/api/controller/v1/task.go

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ const (
9898
GitHttpURL = "git_http_url"
9999
GitUserName = "git_user_name"
100100
GitPassword = "git_user_password"
101+
ZIPFileExtension = ".zip"
101102
)
102103

103104
func getSQLFromFile(c echo.Context) (getSQLFromFileResp, error) {
@@ -735,8 +736,9 @@ func GetTaskAnalysisData(c echo.Context) error {
735736
}
736737

737738
type CreateAuditTasksGroupReqV1 struct {
738-
Instances []*InstanceForCreatingTask `json:"instances" valid:"dive,required"`
739-
ExecMode string `json:"exec_mode" enums:"sql_file,sqls"`
739+
Instances []*InstanceForCreatingTask `json:"instances" valid:"dive,required"`
740+
ExecMode string `json:"exec_mode" enums:"sql_file,sqls"`
741+
FileOrderMethod string `json:"file_order_method"`
740742
}
741743

742744
type InstanceForCreatingTask struct {
@@ -836,6 +838,7 @@ func CreateAuditTasksGroupV1(c echo.Context) error {
836838
}
837839
tasks[i].CreatedAt = time.Now()
838840
tasks[i].ExecMode = req.ExecMode
841+
tasks[i].FileOrderMethod = req.FileOrderMethod
839842
}
840843

841844
taskGroup := model.TaskGroup{Tasks: tasks}
@@ -852,9 +855,8 @@ func CreateAuditTasksGroupV1(c echo.Context) error {
852855
}
853856

854857
type AuditTaskGroupReqV1 struct {
855-
TaskGroupId uint `json:"task_group_id" form:"task_group_id" valid:"required"`
856-
Sql string `json:"sql" form:"sql" example:"alter table tb1 drop columns c1"`
857-
FileOrderMethod string `json:"file_order_method" form:"file_order_method"`
858+
TaskGroupId uint `json:"task_group_id" form:"task_group_id" valid:"required"`
859+
Sql string `json:"sql" form:"sql" example:"alter table tb1 drop columns c1"`
858860
}
859861

860862
type AuditTaskGroupRes struct {
@@ -957,6 +959,14 @@ func AuditTaskGroupV1(c echo.Context) error {
957959
return controller.JSONBaseErrorReq(c, errors.New(errors.GenericError, fmt.Errorf("add sqls from file to task failed: %v", err)))
958960
}
959961
if len(fileRecords) > 0 {
962+
fileHeader, _, err := getFileHeaderFromContext(c)
963+
if err != nil {
964+
return controller.JSONBaseErrorReq(c, err)
965+
}
966+
if strings.HasSuffix(fileHeader.Filename, ZIPFileExtension) && task.FileOrderMethod != "" && task.ExecMode == model.ExecModeSqlFile {
967+
sortAuditFiles(fileRecords, task.FileOrderMethod)
968+
}
969+
960970
err = batchCreateFileRecords(s, fileRecords, task.ID)
961971
if err != nil {
962972
return controller.JSONBaseErrorReq(c, errors.New(errors.GenericError, fmt.Errorf("save sql file record failed: %v", err)))
@@ -1145,5 +1155,5 @@ type GetSqlFileOrderMethodResV1 struct {
11451155
// @Success 200 {object} v1.GetSqlFileOrderMethodResV1
11461156
// @router /v1/tasks/file_order_methods [get]
11471157
func GetSqlFileOrderMethodV1(c echo.Context) error {
1148-
return c.JSON(http.StatusOK, GetSqlFileOrderMethodResV1{})
1158+
return getSqlFileOrderMethod(c)
11491159
}

sqle/api/controller/v1/task_ce.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,17 @@ package v1
66
import (
77
"github.com/actiontech/sqle/sqle/api/controller"
88
"github.com/actiontech/sqle/sqle/errors"
9+
"github.com/actiontech/sqle/sqle/model"
910

1011
"github.com/labstack/echo/v4"
1112
)
1213

1314
func getTaskAnalysisData(c echo.Context) error {
1415
return controller.JSONBaseErrorReq(c, errors.NewNotSupportGetTaskAnalysisDataErr())
1516
}
17+
18+
func getSqlFileOrderMethod(c echo.Context) error {
19+
return controller.JSONBaseErrorReq(c, errors.NewNotSupportGetSqlFileOrderMethodErr())
20+
}
21+
22+
func sortAuditFiles(auditFiles []*model.AuditFile, orderMethod string) {}

sqle/docs/docs.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9026,6 +9026,9 @@ var doc = `{
90269026
"sqls"
90279027
]
90289028
},
9029+
"file_order_method": {
9030+
"type": "string"
9031+
},
90299032
"instances": {
90309033
"type": "array",
90319034
"items": {

sqle/docs/swagger.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9010,6 +9010,9 @@
90109010
"sqls"
90119011
]
90129012
},
9013+
"file_order_method": {
9014+
"type": "string"
9015+
},
90139016
"instances": {
90149017
"type": "array",
90159018
"items": {

sqle/docs/swagger.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -499,6 +499,8 @@ definitions:
499499
- sql_file
500500
- sqls
501501
type: string
502+
file_order_method:
503+
type: string
502504
instances:
503505
items:
504506
$ref: '#/definitions/v1.InstanceForCreatingTask'

sqle/errors/errors.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,3 +144,7 @@ func NewTaskNoExistOrNoAccessErr() error {
144144
func NewInstanceNoExistErr() error {
145145
return New(DataNotExist, fmt.Errorf("instance is not exist"))
146146
}
147+
148+
func NewNotSupportGetSqlFileOrderMethodErr() error {
149+
return New(EnterpriseEditionFeatures, fmt.Errorf("get sql file order method is enterprise version function"))
150+
}

sqle/model/task.go

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -43,23 +43,24 @@ const ExecModeSqls = "sqls"
4343

4444
type Task struct {
4545
Model
46-
InstanceId uint64 `json:"instance_id"`
47-
Schema string `json:"instance_schema" gorm:"column:instance_schema" example:"db1"`
48-
PassRate float64 `json:"pass_rate"`
49-
Score int32 `json:"score"`
50-
AuditLevel string `json:"audit_level"`
51-
SQLSource string `json:"sql_source" gorm:"column:sql_source"`
52-
DBType string `json:"db_type" gorm:"default:'mysql'" example:"mysql"`
53-
Status string `json:"status" gorm:"default:\"initialized\""`
54-
GroupId uint `json:"group_id" gorm:"column:group_id"`
55-
CreateUserId uint64
56-
ExecStartAt *time.Time
57-
ExecEndAt *time.Time
58-
ExecMode string `json:"exec_mode" gorm:"default:'sqls'" example:"sqls"`
59-
Instance *Instance
60-
ExecuteSQLs []*ExecuteSQL `json:"-" gorm:"foreignkey:TaskId"`
61-
RollbackSQLs []*RollbackSQL `json:"-" gorm:"foreignkey:TaskId"`
62-
AuditFiles []*AuditFile `json:"-" gorm:"foreignkey:TaskId"`
46+
InstanceId uint64 `json:"instance_id"`
47+
Schema string `json:"instance_schema" gorm:"column:instance_schema" example:"db1"`
48+
PassRate float64 `json:"pass_rate"`
49+
Score int32 `json:"score"`
50+
AuditLevel string `json:"audit_level"`
51+
SQLSource string `json:"sql_source" gorm:"column:sql_source"`
52+
DBType string `json:"db_type" gorm:"default:'mysql'" example:"mysql"`
53+
Status string `json:"status" gorm:"default:\"initialized\""`
54+
GroupId uint `json:"group_id" gorm:"column:group_id"`
55+
CreateUserId uint64
56+
ExecStartAt *time.Time
57+
ExecEndAt *time.Time
58+
ExecMode string `json:"exec_mode" gorm:"default:'sqls'" example:"sqls"`
59+
FileOrderMethod string `json:"file_order_method" gorm:"column:file_order_method"`
60+
Instance *Instance
61+
ExecuteSQLs []*ExecuteSQL `json:"-" gorm:"foreignkey:TaskId"`
62+
RollbackSQLs []*RollbackSQL `json:"-" gorm:"foreignkey:TaskId"`
63+
AuditFiles []*AuditFile `json:"-" gorm:"foreignkey:TaskId"`
6364
}
6465

6566
func (t *Task) InstanceName() string {

0 commit comments

Comments
 (0)