From 1611a6c97ccc1cea85bfdd2df6e82415faf3a60c Mon Sep 17 00:00:00 2001 From: taolx0 Date: Tue, 4 Jun 2024 17:48:54 +0800 Subject: [PATCH] feat:add sql parse api define for direct get sql parse info --- sqle/api/app.go | 2 + sqle/api/controller/v1/sql_audit.go | 35 ++++++++++++ sqle/docs/docs.go | 86 +++++++++++++++++++++++++++++ sqle/docs/swagger.json | 86 +++++++++++++++++++++++++++++ sqle/docs/swagger.yaml | 56 +++++++++++++++++++ 5 files changed, 265 insertions(+) diff --git a/sqle/api/app.go b/sqle/api/app.go index eaca14719d..8a837f321b 100644 --- a/sqle/api/app.go +++ b/sqle/api/app.go @@ -374,6 +374,8 @@ func StartApi(net *gracenet.Net, exitChan chan struct{}, config *config.SqleOpti v1Router.POST("/audit_files", v1.DirectAuditFiles) v2Router.POST("/audit_files", v2.DirectAuditFiles) v1Router.GET("/sql_analysis", v1.DirectGetSQLAnalysis) + v1Router.GET("/sql_parse", v1.DirectParseSQL) + // 企业公告 v1Router.GET("/company_notice", v1.GetCompanyNotice) // 系统功能开关 diff --git a/sqle/api/controller/v1/sql_audit.go b/sqle/api/controller/v1/sql_audit.go index 6cfe3a1501..dfff8923e8 100644 --- a/sqle/api/controller/v1/sql_audit.go +++ b/sqle/api/controller/v1/sql_audit.go @@ -290,3 +290,38 @@ type SqlAnalysisResDataV1 struct { func DirectGetSQLAnalysis(c echo.Context) error { return directGetSQLAnalysis(c) } + +type DirectParseSQLReq struct { + InstanceType string `json:"instance_type" query:"instance_type" example:"MySQL" valid:"required"` + SQL string `json:"sql" query:"sql" example:"select * from t1; select * from t2;" valid:"required"` +} + +type DirectParseSQLRes struct { + controller.BaseRes + Data []*ParseSQLResData `json:"data"` +} + +type ParseSQLResData struct { + SQL string `json:"sql"` + SQLType string `json:"sql_type"` + ExtractTable []*ExtractTable `json:"extract_table"` +} + +type ExtractTable struct { + SchemaName string `json:"schema_name"` + TableName string `json:"table_name"` +} + +// DirectParseSQL +// @Summary 解析SQL +// @Description parse sql +// @Id parseSQL +// @Tags sql_parse +// @Security ApiKeyAuth +// @param instance_type query string true "instance type" +// @Param sql query string true "sql" +// @Success 200 {object} v1.DirectParseSQLRes +// @router /v1/sql_parse [get] +func DirectParseSQL(c echo.Context) error { + return nil +} diff --git a/sqle/docs/docs.go b/sqle/docs/docs.go index 2a22a58f89..e0123fb8cd 100644 --- a/sqle/docs/docs.go +++ b/sqle/docs/docs.go @@ -6038,6 +6038,45 @@ var doc = `{ } } }, + "/v1/sql_parse": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "parse sql", + "tags": [ + "sql_parse" + ], + "summary": "解析SQL", + "operationId": "parseSQL", + "parameters": [ + { + "type": "string", + "description": "instance type", + "name": "instance_type", + "in": "query", + "required": true + }, + { + "type": "string", + "description": "sql", + "name": "sql", + "in": "query", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1.DirectParseSQLRes" + } + } + } + } + }, "/v1/statistic/instances/sql_average_execution_time": { "get": { "security": [ @@ -9472,6 +9511,25 @@ var doc = `{ } } }, + "v1.DirectParseSQLRes": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "example": 0 + }, + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/v1.ParseSQLResData" + } + }, + "message": { + "type": "string", + "example": "ok" + } + } + }, "v1.DriversResV1": { "type": "object", "properties": { @@ -9523,6 +9581,17 @@ var doc = `{ } } }, + "v1.ExtractTable": { + "type": "object", + "properties": { + "schema_name": { + "type": "string" + }, + "table_name": { + "type": "string" + } + } + }, "v1.FeishuConfigurationV1": { "type": "object", "properties": { @@ -11752,6 +11821,23 @@ var doc = `{ } } }, + "v1.ParseSQLResData": { + "type": "object", + "properties": { + "extract_table": { + "type": "array", + "items": { + "$ref": "#/definitions/v1.ExtractTable" + } + }, + "sql": { + "type": "string" + }, + "sql_type": { + "type": "string" + } + } + }, "v1.PartialSyncAuditPlanSQLsReqV1": { "type": "object", "properties": { diff --git a/sqle/docs/swagger.json b/sqle/docs/swagger.json index 40e0bbb98a..f3c3496443 100644 --- a/sqle/docs/swagger.json +++ b/sqle/docs/swagger.json @@ -6022,6 +6022,45 @@ } } }, + "/v1/sql_parse": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "parse sql", + "tags": [ + "sql_parse" + ], + "summary": "解析SQL", + "operationId": "parseSQL", + "parameters": [ + { + "type": "string", + "description": "instance type", + "name": "instance_type", + "in": "query", + "required": true + }, + { + "type": "string", + "description": "sql", + "name": "sql", + "in": "query", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1.DirectParseSQLRes" + } + } + } + } + }, "/v1/statistic/instances/sql_average_execution_time": { "get": { "security": [ @@ -9456,6 +9495,25 @@ } } }, + "v1.DirectParseSQLRes": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "example": 0 + }, + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/v1.ParseSQLResData" + } + }, + "message": { + "type": "string", + "example": "ok" + } + } + }, "v1.DriversResV1": { "type": "object", "properties": { @@ -9507,6 +9565,17 @@ } } }, + "v1.ExtractTable": { + "type": "object", + "properties": { + "schema_name": { + "type": "string" + }, + "table_name": { + "type": "string" + } + } + }, "v1.FeishuConfigurationV1": { "type": "object", "properties": { @@ -11736,6 +11805,23 @@ } } }, + "v1.ParseSQLResData": { + "type": "object", + "properties": { + "extract_table": { + "type": "array", + "items": { + "$ref": "#/definitions/v1.ExtractTable" + } + }, + "sql": { + "type": "string" + }, + "sql_type": { + "type": "string" + } + } + }, "v1.PartialSyncAuditPlanSQLsReqV1": { "type": "object", "properties": { diff --git a/sqle/docs/swagger.yaml b/sqle/docs/swagger.yaml index 4b96598e0c..d9e142d3a9 100644 --- a/sqle/docs/swagger.yaml +++ b/sqle/docs/swagger.yaml @@ -760,6 +760,19 @@ definitions: example: ok type: string type: object + v1.DirectParseSQLRes: + properties: + code: + example: 0 + type: integer + data: + items: + $ref: '#/definitions/v1.ParseSQLResData' + type: array + message: + example: ok + type: string + type: object v1.DriversResV1: properties: driver_name_list: @@ -793,6 +806,13 @@ definitions: perform_improve_per: type: number type: object + v1.ExtractTable: + properties: + schema_name: + type: string + table_name: + type: string + type: object v1.FeishuConfigurationV1: properties: app_id: @@ -2322,6 +2342,17 @@ definitions: example: ok type: string type: object + v1.ParseSQLResData: + properties: + extract_table: + items: + $ref: '#/definitions/v1.ExtractTable' + type: array + sql: + type: string + sql_type: + type: string + type: object v1.PartialSyncAuditPlanSQLsReqV1: properties: audit_plan_sql_list: @@ -8210,6 +8241,31 @@ paths: summary: 直接审核SQL tags: - sql_audit + /v1/sql_parse: + get: + description: parse sql + operationId: parseSQL + parameters: + - description: instance type + in: query + name: instance_type + required: true + type: string + - description: sql + in: query + name: sql + required: true + type: string + responses: + "200": + description: OK + schema: + $ref: '#/definitions/v1.DirectParseSQLRes' + security: + - ApiKeyAuth: [] + summary: 解析SQL + tags: + - sql_parse /v1/statistic/instances/sql_average_execution_time: get: description: get average execution time of sql