HandleSQL swagger:route POST /query/sql querySQL query in SQL Consumes: - application/json - application/hll Produces: - application/json Responses: default: errorResponse 200: aqlResponse 400: aqlResponse
(w http.ResponseWriter, r *http.Request)
| 37 | // 200: aqlResponse |
| 38 | // 400: aqlResponse |
| 39 | func (handler *QueryHandler) HandleSQL(w http.ResponseWriter, r *http.Request) { |
| 40 | sqlRequest := common.SQLRequest{Device: -1} |
| 41 | |
| 42 | if err := common.ReadRequest(r, &sqlRequest); err != nil { |
| 43 | common.RespondWithBadRequest(w, err) |
| 44 | utils.GetLogger().With( |
| 45 | "error", err, |
| 46 | "statusCode", http.StatusBadRequest, |
| 47 | ).Error("failed to parse query") |
| 48 | return |
| 49 | } |
| 50 | |
| 51 | var aqlQueries []queryCom.AQLQuery |
| 52 | if sqlRequest.Body.Queries != nil { |
| 53 | aqlQueries = make([]queryCom.AQLQuery, len(sqlRequest.Body.Queries)) |
| 54 | startTs := utils.Now() |
| 55 | for i, sqlQuery := range sqlRequest.Body.Queries { |
| 56 | parsedAQLQuery, err := sql.Parse(sqlQuery, utils.GetLogger()) |
| 57 | if err != nil { |
| 58 | common.RespondWithBadRequest(w, err) |
| 59 | return |
| 60 | } |
| 61 | aqlQueries[i] = *parsedAQLQuery |
| 62 | } |
| 63 | sqlParseTimer := utils.GetRootReporter().GetTimer(utils.QuerySQLParsingLatency) |
| 64 | duration := utils.Now().Sub(startTs) |
| 65 | sqlParseTimer.Record(duration) |
| 66 | |
| 67 | } |
| 68 | |
| 69 | aqlRequest := common.AQLRequest{ |
| 70 | Device: sqlRequest.Device, |
| 71 | Verbose: sqlRequest.Verbose + sqlRequest.Debug, |
| 72 | Debug: sqlRequest.Debug, |
| 73 | Profiling: sqlRequest.Profiling, |
| 74 | DeviceChoosingTimeout: sqlRequest.DeviceChoosingTimeout, |
| 75 | Accept: sqlRequest.Accept, |
| 76 | Origin: sqlRequest.Origin, |
| 77 | Body: queryCom.AQLRequest{ |
| 78 | Queries: aqlQueries, |
| 79 | }, |
| 80 | } |
| 81 | handler.handleAQLInternal(aqlRequest, w, r) |
| 82 | } |
nothing calls this directly
no test coverage detected