(
options: {
readonly Request: Req
readonly Result: Res
readonly execute: (
requests: Arr.NonEmptyArray<Req["Encoded"]>
) => Effect.Effect<ReadonlyArray<_>, E, R>
}
)
| 99 | * @since 4.0.0 |
| 100 | */ |
| 101 | export const ordered = <Req extends Schema.Constraint, Res extends Schema.Constraint, _, E, R>( |
| 102 | options: { |
| 103 | readonly Request: Req |
| 104 | readonly Result: Res |
| 105 | readonly execute: ( |
| 106 | requests: Arr.NonEmptyArray<Req["Encoded"]> |
| 107 | ) => Effect.Effect<ReadonlyArray<_>, E, R> |
| 108 | } |
| 109 | ): RequestResolver.RequestResolver< |
| 110 | SqlRequest<Req["Type"], Res["Type"], E | ResultLengthMismatch, Req["EncodingServices"] | Res["DecodingServices"] | R> |
| 111 | > => { |
| 112 | const decodeArray = Schema.decodeUnknownEffect(Schema.Array(options.Result)) |
| 113 | return RequestResolver.makeGrouped< |
| 114 | SqlRequest< |
| 115 | Req["Type"], |
| 116 | Res["Type"], |
| 117 | E | ResultLengthMismatch, |
| 118 | Req["EncodingServices"] | Res["DecodingServices"] | R |
| 119 | >, |
| 120 | SqlClient.TransactionConnection.Service | undefined |
| 121 | >({ |
| 122 | key: transactionKey, |
| 123 | resolver: Effect.fnUntraced(function*(entries) { |
| 124 | const [inputs, encodedEntries] = yield* partitionRequests(entries, options.Request) |
| 125 | if (!Arr.isArrayNonEmpty(inputs)) return |
| 126 | const results = yield* options.execute(inputs).pipe( |
| 127 | Effect.provideContext(entries[0].context) |
| 128 | ) |
| 129 | if (results.length !== inputs.length) { |
| 130 | return yield* new ResultLengthMismatch({ expected: inputs.length, actual: results.length }) |
| 131 | } |
| 132 | const decodedResults = yield* decodeArray(results).pipe( |
| 133 | Effect.provideContext(entries[0].context) |
| 134 | ) |
| 135 | for (let i = 0; i < encodedEntries.length; i++) { |
| 136 | encodedEntries[i].completeUnsafe(Exit.succeed(decodedResults[i])) |
| 137 | } |
| 138 | }) |
| 139 | }) |
| 140 | } |
| 141 | |
| 142 | /** |
nothing calls this directly
no test coverage detected
searching dependent graphs…