(type, dbId, query, values, callback, cache)
| 19 | }); |
| 20 | |
| 21 | async function ExecuteQuery(type, dbId, query, values, callback, cache) { |
| 22 | const start = performance.now(); |
| 23 | let connection = null; |
| 24 | try { |
| 25 | if (global.interceptor) { |
| 26 | let resourceName = GetInvokingResource(); |
| 27 | const resultMiddleware = await QueryInterceptor({ resourceName, type, dbId, query, values, callback, cache }); |
| 28 | if (resultMiddleware === null) return callback ? callback(null) : null; |
| 29 | ({ resourceName, type, dbId, query, values, callback, cache } = resultMiddleware); |
| 30 | } |
| 31 | |
| 32 | connection = await GetConnection(dbId); |
| 33 | |
| 34 | if (values) { |
| 35 | if(typeof(values) === "string") |
| 36 | values = [values]; |
| 37 | } else { |
| 38 | values = null; |
| 39 | } |
| 40 | values = ParseNilArgs(query, values) |
| 41 | |
| 42 | if (query.includes("@")) { |
| 43 | query = ReplaceNamedParams(query, values) |
| 44 | values = null; |
| 45 | } |
| 46 | const [rows] = (type == "Raw" || type == "Scalar" || type == "Single" || type == "Update" || type == "Insert" || type == "Query") |
| 47 | ? await connection.query(query, values) : await connection.execute(query, values); |
| 48 | const end = performance.now(); |
| 49 | const time = (end - start).toFixed(3); |
| 50 | |
| 51 | if (time >= Config.SlowQueryWarn) { |
| 52 | Log(LogTypes.Warning, `Slow query detected: ${query} - ${time}ms`) |
| 53 | } |
| 54 | |
| 55 | let result = ParseResponse(type, rows); |
| 56 | try { |
| 57 | return callback ? callback(result) : result; |
| 58 | } catch(err) { |
| 59 | return result; |
| 60 | } |
| 61 | } catch (err) { |
| 62 | ParseError(`Error while executing query: ${err} , query: ${query}, values: ${values}`, null, true); |
| 63 | } finally { |
| 64 | ReleaseConnection(dbId, connection) |
| 65 | } |
| 66 | } |
| 67 | |
| 68 | async function ExecuteTransaction(dbId, queries, params, callback) { |
| 69 | const connection = await GetConnection(dbId); |
no test coverage detected