(
sql: string,
values?: ReadonlyArray<any>,
rowsAsArray = false
)
| 182 | }) |
| 183 | |
| 184 | const run = ( |
| 185 | sql: string, |
| 186 | values?: ReadonlyArray<any>, |
| 187 | rowsAsArray = false |
| 188 | ) => |
| 189 | Effect.async<any, SqlError>((resume) => { |
| 190 | const req = new Tedious.Request(sql, (cause, _rowCount, result) => { |
| 191 | if (cause) { |
| 192 | resume(Effect.fail(new SqlError({ cause, message: "Failed to execute statement" }))) |
| 193 | return |
| 194 | } |
| 195 | |
| 196 | if (rowsAsArray) { |
| 197 | result = result.map((row: any) => row.map((_: any) => _.value)) |
| 198 | } else { |
| 199 | result = rowsToObjects(result) |
| 200 | } |
| 201 | |
| 202 | resume(Effect.succeed(result)) |
| 203 | }) |
| 204 | |
| 205 | if (values) { |
| 206 | for (let i = 0, len = values.length; i < len; i++) { |
| 207 | const value = values[i] |
| 208 | const name = numberToParamName(i) |
| 209 | |
| 210 | if (isMssqlParam(value)) { |
| 211 | req.addParameter(name, value.i0, value.i1, value.i2) |
| 212 | } else { |
| 213 | const kind = Statement.primitiveKind(value) |
| 214 | const type = parameterTypes[kind] |
| 215 | req.addParameter(name, type, value) |
| 216 | } |
| 217 | } |
| 218 | } |
| 219 | |
| 220 | conn.cancel() |
| 221 | conn.execSql(req) |
| 222 | }) |
| 223 | |
| 224 | const runProcedure = ( |
| 225 | procedure: Procedure.ProcedureWithValues<any, any, any>, |
no test coverage detected