MCPcopy Create free account
hub / github.com/Effect-TS/effect / runProcedure

Function runProcedure

packages/sql/mssql/src/MssqlClient.ts:379–426  ·  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

377 })
378
379 const runProcedure = (
380 procedure: Procedure.ProcedureWithValues<any, any, any>,
381 transformRows: ((rows: ReadonlyArray<any>) => ReadonlyArray<any>) | undefined
382 ) =>
383 Effect.callback<any, SqlError>((resume) => {
384 const result: Record<string, any> = {}
385
386 const req = new Tedious.Request(
387 escape(procedure.name),
388 (cause, _, rows) => {
389 if (cause) {
390 resume(
391 Effect.fail(new SqlError({ reason: classifyError(cause, "Failed to execute statement", "execute") }))
392 )
393 } else {
394 rows = rowsToObjects(rows)
395 if (transformRows) {
396 rows = transformRows(rows) as any
397 }
398 resume(
399 Effect.succeed({
400 output: result,
401 rows
402 })
403 )
404 }
405 }
406 )
407
408 for (const name in procedure.params) {
409 const param = procedure.params[name]
410 const value = procedure.values[name]
411 req.addParameter(name, param.type, value, param.options)
412 }
413
414 for (const name in procedure.outputParams) {
415 const param = procedure.outputParams[name]
416 req.addOutputParameter(name, param.type, undefined, param.options)
417 }
418
419 req.on("returnValue", (name, value) => {
420 Rec.assignProperty(result, name, value)
421 })
422
423 conn.cancel()
424 conn.callProcedure(req)
425 return Effect.sync(() => conn.cancel())
426 })
427
428 const connection = identity<MssqlConnection>({
429 execute(sql, params, transformRows) {

Callers 1

callFunction · 0.85

Calls 12

rowsToObjectsFunction · 0.85
escapeFunction · 0.70
classifyErrorFunction · 0.70
onMethod · 0.65
resumeFunction · 0.50
failMethod · 0.45
succeedMethod · 0.45
addParameterMethod · 0.45
addOutputParameterMethod · 0.45
cancelMethod · 0.45
callProcedureMethod · 0.45
syncMethod · 0.45

Tested by

no test coverage detected