MCPcopy Index your code
hub / github.com/Effect-TS/effect / runProcedure

Function runProcedure

packages/sql-mssql/src/MssqlClient.ts:224–268  ·  view source on GitHub ↗
(
        procedure: Procedure.ProcedureWithValues<any, any, any>,
        transformRows: ((rows: ReadonlyArray<any>) => ReadonlyArray<any>) | undefined
      )

Source from the content-addressed store, hash-verified

222 })
223
224 const runProcedure = (
225 procedure: Procedure.ProcedureWithValues<any, any, any>,
226 transformRows: ((rows: ReadonlyArray<any>) => ReadonlyArray<any>) | undefined
227 ) =>
228 Effect.async<any, SqlError>((resume) => {
229 const result: Record<string, any> = {}
230
231 const req = new Tedious.Request(
232 escape(procedure.name),
233 (cause, _, rows) => {
234 if (cause) {
235 resume(Effect.fail(new SqlError({ cause, message: "Failed to execute statement" })))
236 } else {
237 rows = rowsToObjects(rows)
238 if (transformRows) {
239 rows = transformRows(rows) as any
240 }
241 resume(
242 Effect.succeed({
243 params: result,
244 rows
245 })
246 )
247 }
248 }
249 )
250
251 for (const name in procedure.params) {
252 const param = procedure.params[name]
253 const value = procedure.values[name]
254 req.addParameter(name, param.type, value, param.options)
255 }
256
257 for (const name in procedure.outputParams) {
258 const param = procedure.outputParams[name]
259 req.addOutputParameter(name, param.type, undefined, param.options)
260 }
261
262 req.on("returnValue", (name, value) => {
263 result[name] = value
264 })
265
266 conn.cancel()
267 conn.callProcedure(req)
268 })
269
270 const connection = identity<MssqlConnection>({
271 execute(sql, params, transformRows) {

Callers 1

callFunction · 0.85

Calls 4

rowsToObjectsFunction · 0.85
escapeFunction · 0.70
failMethod · 0.65
resumeFunction · 0.50

Tested by

no test coverage detected