Skip to content

Commit 253ac00

Browse files
Merge pull request #3181 from actiontech/direct-audit-support-online
Direct audit support online
2 parents e530a9d + 05a60dd commit 253ac00

File tree

6 files changed

+51
-10
lines changed

6 files changed

+51
-10
lines changed

sqle/api/controller/v1/sql_audit.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ func DirectAudit(c echo.Context) error {
118118

119119
var task *model.Task
120120
if instance != nil && schemaName != "" {
121-
task, err = server.DirectAuditByInstance(l, sql, schemaName, instance)
121+
task, err = server.DirectAuditByInstance(l, sql, schemaName, instance, "")
122122
} else {
123123
task, err = server.AuditSQLByDBType(l, sql, req.InstanceType, projectUid, "")
124124
}
@@ -226,7 +226,7 @@ func DirectAuditFiles(c echo.Context) error {
226226

227227
var task *model.Task
228228
if instance != nil && schemaName != "" {
229-
task, err = server.DirectAuditByInstance(l, sqls, schemaName, instance)
229+
task, err = server.DirectAuditByInstance(l, sqls, schemaName, instance, "")
230230
} else {
231231
task, err = server.AuditSQLByDBType(l, sqls, req.InstanceType, projectUid, "")
232232
}

sqle/api/controller/v2/sql_audit.go

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,12 @@ import (
2020
type DirectAuditReqV2 struct {
2121
InstanceType string `json:"instance_type" form:"instance_type" example:"MySQL" valid:"required"`
2222
// 调用方不应该关心SQL是否被完美的拆分成独立的条目, 拆分SQL由SQLE实现
23-
SQLContent string `json:"sql_content" form:"sql_content" example:"select * from t1; select * from t2;" valid:"required"`
24-
SQLType string `json:"sql_type" form:"sql_type" example:"sql" enums:"sql,mybatis," valid:"omitempty,oneof=sql mybatis"`
25-
ProjectId string `json:"project_id" form:"project_id" example:"700300" valid:"required"`
26-
RuleTemplateName string `json:"rule_template_name" form:"rule_template_name" example:"default" valid:"required"`
23+
SQLContent string `json:"sql_content" form:"sql_content" example:"select * from t1; select * from t2;" valid:"required"`
24+
SQLType string `json:"sql_type" form:"sql_type" example:"sql" enums:"sql,mybatis," valid:"omitempty,oneof=sql mybatis"`
25+
ProjectId string `json:"project_id" form:"project_id" example:"700300" valid:"required"`
26+
RuleTemplateName string `json:"rule_template_name" form:"rule_template_name" example:"default" valid:"required"`
27+
InstanceName *string `json:"instance_name" form:"instance_name" example:"instance1"`
28+
SchemaName *string `json:"schema_name" form:"schema_name" example:"schema1"`
2729
}
2830

2931
type AuditResDataV2 struct {
@@ -72,7 +74,24 @@ func DirectAudit(c echo.Context) error {
7274

7375
l := log.NewEntry().WithField(c.Path(), "direct audit failed")
7476

75-
task, err := server.AuditSQLByDBType(l, sql, req.InstanceType, req.ProjectId, req.RuleTemplateName)
77+
var instance *model.Instance
78+
if req.ProjectId != "" && req.InstanceName != nil {
79+
var exist bool
80+
instance, exist, err = dms.GetInstanceInProjectByName(c.Request().Context(), req.ProjectId, *req.InstanceName)
81+
if err != nil {
82+
return controller.JSONBaseErrorReq(c, err)
83+
}
84+
if !exist {
85+
return controller.JSONBaseErrorReq(c, v1.ErrInstanceNotExist)
86+
}
87+
}
88+
89+
var task *model.Task
90+
if instance != nil && req.SchemaName != nil {
91+
task, err = server.DirectAuditByInstance(l, sql, *req.SchemaName, instance, req.RuleTemplateName)
92+
} else {
93+
task, err = server.AuditSQLByDBType(l, sql, req.InstanceType, req.ProjectId, req.RuleTemplateName)
94+
}
7695
if err != nil {
7796
l.Errorf("audit sqls failed: %v", err)
7897
return controller.JSONBaseErrorReq(c, v1.ErrDirectAudit)
@@ -180,7 +199,7 @@ func DirectAuditFiles(c echo.Context) error {
180199

181200
var task *model.Task
182201
if instance != nil && schemaName != "" {
183-
task, err = server.DirectAuditByInstance(l, sqls, schemaName, instance)
202+
task, err = server.DirectAuditByInstance(l, sqls, schemaName, instance, "")
184203
} else {
185204
task, err = server.AuditSQLByDBType(l, sqls, req.InstanceType, projectUid, "")
186205
}

sqle/docs/docs.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22620,6 +22620,10 @@ var doc = `{
2262022620
"v2.DirectAuditReqV2": {
2262122621
"type": "object",
2262222622
"properties": {
22623+
"instance_name": {
22624+
"type": "string",
22625+
"example": "instance1"
22626+
},
2262322627
"instance_type": {
2262422628
"type": "string",
2262522629
"example": "MySQL"
@@ -22632,6 +22636,10 @@ var doc = `{
2263222636
"type": "string",
2263322637
"example": "default"
2263422638
},
22639+
"schema_name": {
22640+
"type": "string",
22641+
"example": "schema1"
22642+
},
2263522643
"sql_content": {
2263622644
"description": "调用方不应该关心SQL是否被完美的拆分成独立的条目, 拆分SQL由SQLE实现",
2263722645
"type": "string",

sqle/docs/swagger.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22604,6 +22604,10 @@
2260422604
"v2.DirectAuditReqV2": {
2260522605
"type": "object",
2260622606
"properties": {
22607+
"instance_name": {
22608+
"type": "string",
22609+
"example": "instance1"
22610+
},
2260722611
"instance_type": {
2260822612
"type": "string",
2260922613
"example": "MySQL"
@@ -22616,6 +22620,10 @@
2261622620
"type": "string",
2261722621
"example": "default"
2261822622
},
22623+
"schema_name": {
22624+
"type": "string",
22625+
"example": "schema1"
22626+
},
2261922627
"sql_content": {
2262022628
"description": "调用方不应该关心SQL是否被完美的拆分成独立的条目, 拆分SQL由SQLE实现",
2262122629
"type": "string",

sqle/docs/swagger.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6505,6 +6505,9 @@ definitions:
65056505
type: object
65066506
v2.DirectAuditReqV2:
65076507
properties:
6508+
instance_name:
6509+
example: instance1
6510+
type: string
65086511
instance_type:
65096512
example: MySQL
65106513
type: string
@@ -6514,6 +6517,9 @@ definitions:
65146517
rule_template_name:
65156518
example: default
65166519
type: string
6520+
schema_name:
6521+
example: schema1
6522+
type: string
65176523
sql_content:
65186524
description: 调用方不应该关心SQL是否被完美的拆分成独立的条目, 拆分SQL由SQLE实现
65196525
example: select * from t1; select * from t2;

sqle/server/audit.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,9 @@ func HookAudit(l *logrus.Entry, task *model.Task, hook AuditHook, projectId *mod
5151

5252
const AuditSchema = "AuditSchema"
5353

54-
func DirectAuditByInstance(l *logrus.Entry, sql, schemaName string, instance *model.Instance) (*model.Task, error) {
54+
func DirectAuditByInstance(l *logrus.Entry, sql, schemaName string, instance *model.Instance, ruleTemplateName string) (*model.Task, error) {
5555
st := model.GetStorage()
56-
rules, customRules, err := st.GetAllRulesByTmpNameAndProjectIdInstanceDBType("", "", instance, instance.DbType)
56+
rules, customRules, err := st.GetAllRulesByTmpNameAndProjectIdInstanceDBType(ruleTemplateName, instance.ProjectId, instance, instance.DbType)
5757
if err != nil {
5858
return nil, err
5959
}

0 commit comments

Comments
 (0)