effect 4.0.0-beta.56 → 4.0.0-beta.58
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Effect.d.ts +7 -0
- package/dist/Effect.d.ts.map +1 -1
- package/dist/Effect.js +7 -0
- package/dist/Effect.js.map +1 -1
- package/dist/Stream.d.ts.map +1 -1
- package/dist/Stream.js +17 -9
- package/dist/Stream.js.map +1 -1
- package/dist/internal/effect.js +2 -0
- package/dist/internal/effect.js.map +1 -1
- package/dist/unstable/http/HttpClientResponse.js +12 -2
- package/dist/unstable/http/HttpClientResponse.js.map +1 -1
- package/dist/unstable/reactivity/AsyncResult.d.ts +37 -17
- package/dist/unstable/reactivity/AsyncResult.d.ts.map +1 -1
- package/dist/unstable/reactivity/AsyncResult.js +9 -0
- package/dist/unstable/reactivity/AsyncResult.js.map +1 -1
- package/dist/unstable/sql/SqlClient.d.ts +20 -2
- package/dist/unstable/sql/SqlClient.d.ts.map +1 -1
- package/dist/unstable/sql/SqlClient.js +34 -29
- package/dist/unstable/sql/SqlClient.js.map +1 -1
- package/dist/unstable/sql/SqlResolver.d.ts.map +1 -1
- package/dist/unstable/sql/SqlResolver.js +4 -6
- package/dist/unstable/sql/SqlResolver.js.map +1 -1
- package/package.json +1 -1
- package/src/Effect.ts +8 -0
- package/src/Stream.ts +24 -13
- package/src/internal/effect.ts +9 -0
- package/src/unstable/http/HttpClientResponse.ts +12 -2
- package/src/unstable/reactivity/AsyncResult.ts +59 -17
- package/src/unstable/sql/SqlClient.ts +36 -9
- package/src/unstable/sql/SqlResolver.ts +9 -11
|
@@ -118,11 +118,7 @@ export const grouped = options => {
|
|
|
118
118
|
export const findById = options => {
|
|
119
119
|
const decodeResults = Schema.decodeUnknownEffect(Schema.Array(options.Result));
|
|
120
120
|
return RequestResolver.makeGrouped({
|
|
121
|
-
key
|
|
122
|
-
const conn = entry.context.mapUnsafe.get(SqlClient.TransactionConnection.key);
|
|
123
|
-
if (!conn) return undefined;
|
|
124
|
-
return Equal.byReferenceUnsafe(conn);
|
|
125
|
-
},
|
|
121
|
+
key: transactionKey,
|
|
126
122
|
resolver: Effect.fnUntraced(function* (entries) {
|
|
127
123
|
const [inputs, idMap] = yield* partitionRequestsById(entries, options.Id);
|
|
128
124
|
const results = yield* options.execute(inputs).pipe(Effect.provideContext(entries[0].context));
|
|
@@ -206,7 +202,9 @@ const partitionRequestsById = function* (requests, schema) {
|
|
|
206
202
|
return [inputs, byIdMap];
|
|
207
203
|
};
|
|
208
204
|
function transactionKey(entry) {
|
|
209
|
-
const
|
|
205
|
+
const client = entry.context.mapUnsafe.get(SqlClient.SqlClient.key);
|
|
206
|
+
if (!client) return undefined;
|
|
207
|
+
const conn = entry.context.mapUnsafe.get(client.transactionService.key);
|
|
210
208
|
if (!conn) return undefined;
|
|
211
209
|
return Equal.byReferenceUnsafe(conn);
|
|
212
210
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqlResolver.js","names":["Arr","Cause","Effect","Equal","Exit","Hash","MutableHashMap","Request","RequestResolver","Schema","SqlClient","ResultLengthMismatch","SqlRequestProto","Class","prototype","symbol","that","equals","payload","hash","request","arguments","length","resolver","SqlRequest","self","Object","create","ordered","options","decodeArray","decodeUnknownEffect","Array","Result","makeGrouped","key","transactionKey","fnUntraced","entries","inputs","partitionRequests","results","execute","pipe","provideContext","context","expected","actual","decodedResults","i","completeUnsafe","succeed","grouped","decodeResults","resultMap","empty","len","result","ResultGroupKey","group","get","_tag","set","value","push","entry","RequestGroupKey","constNoSuchElement","findById","
|
|
1
|
+
{"version":3,"file":"SqlResolver.js","names":["Arr","Cause","Effect","Equal","Exit","Hash","MutableHashMap","Request","RequestResolver","Schema","SqlClient","ResultLengthMismatch","SqlRequestProto","Class","prototype","symbol","that","equals","payload","hash","request","arguments","length","resolver","SqlRequest","self","Object","create","ordered","options","decodeArray","decodeUnknownEffect","Array","Result","makeGrouped","key","transactionKey","fnUntraced","entries","inputs","partitionRequests","results","execute","pipe","provideContext","context","expected","actual","decodedResults","i","completeUnsafe","succeed","grouped","decodeResults","resultMap","empty","len","result","ResultGroupKey","group","get","_tag","set","value","push","entry","RequestGroupKey","constNoSuchElement","findById","idMap","partitionRequestsById","Id","id","ResultId","remove","isEmpty","forEach","void_","void","fail","NoSuchElementError","requests","schema","encode","encodeEffect","handle","matchCauseEager","onFailure","cause","failCause","onSuccess","byIdMap","client","mapUnsafe","undefined","conn","transactionService","byReferenceUnsafe"],"sources":["../../../src/unstable/sql/SqlResolver.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
package/src/Effect.ts
CHANGED
|
@@ -13342,6 +13342,14 @@ export const interruptibleMask: <A, E, R>(
|
|
|
13342
13342
|
) => Effect<A, E, R>
|
|
13343
13343
|
) => Effect<A, E, R> = internal.interruptibleMask
|
|
13344
13344
|
|
|
13345
|
+
/**
|
|
13346
|
+
* Creates an AbortSignal that is managed by the provided scope.
|
|
13347
|
+
*
|
|
13348
|
+
* @since 4.0.0
|
|
13349
|
+
* @category Interruption
|
|
13350
|
+
*/
|
|
13351
|
+
export const abortSignal: Effect<AbortSignal, never, Scope> = internal.abortSignal
|
|
13352
|
+
|
|
13345
13353
|
// -----------------------------------------------------------------------------
|
|
13346
13354
|
// Repetition & Recursion
|
|
13347
13355
|
// -----------------------------------------------------------------------------
|
package/src/Stream.ts
CHANGED
|
@@ -17810,20 +17810,31 @@ export const mkString = <E, R>(self: Stream<string, E, R>): Effect.Effect<string
|
|
|
17810
17810
|
* @category Destructors
|
|
17811
17811
|
*/
|
|
17812
17812
|
export const mkUint8Array = <E, R>(self: Stream<Uint8Array, E, R>): Effect.Effect<Uint8Array, E, R> =>
|
|
17813
|
-
|
|
17814
|
-
|
|
17815
|
-
|
|
17816
|
-
|
|
17817
|
-
|
|
17818
|
-
|
|
17819
|
-
|
|
17813
|
+
Effect.map(
|
|
17814
|
+
Channel.runFold(
|
|
17815
|
+
self.channel,
|
|
17816
|
+
(): {
|
|
17817
|
+
bytes: number
|
|
17818
|
+
readonly arrays: Array<Uint8Array>
|
|
17819
|
+
} => ({
|
|
17820
|
+
bytes: 0,
|
|
17821
|
+
arrays: []
|
|
17822
|
+
}),
|
|
17823
|
+
(acc, chunk) => {
|
|
17824
|
+
for (let i = 0; i < chunk.length; i++) {
|
|
17825
|
+
acc.bytes += chunk[i].length
|
|
17826
|
+
acc.arrays.push(chunk[i])
|
|
17827
|
+
}
|
|
17828
|
+
return acc
|
|
17820
17829
|
}
|
|
17821
|
-
|
|
17822
|
-
|
|
17823
|
-
|
|
17824
|
-
|
|
17825
|
-
|
|
17826
|
-
|
|
17830
|
+
),
|
|
17831
|
+
({ arrays, bytes }) => {
|
|
17832
|
+
const result = new Uint8Array(bytes)
|
|
17833
|
+
let offset = 0
|
|
17834
|
+
for (let i = 0; i < arrays.length; i++) {
|
|
17835
|
+
const array = arrays[i]
|
|
17836
|
+
result.set(array, offset)
|
|
17837
|
+
offset += array.length
|
|
17827
17838
|
}
|
|
17828
17839
|
return result
|
|
17829
17840
|
}
|
package/src/internal/effect.ts
CHANGED
|
@@ -4177,6 +4177,15 @@ export const interruptibleMask = <A, E, R>(
|
|
|
4177
4177
|
return f(uninterruptible)
|
|
4178
4178
|
})
|
|
4179
4179
|
|
|
4180
|
+
/** @internal */
|
|
4181
|
+
export const abortSignal: Effect.Effect<AbortSignal, never, Scope.Scope> = map(
|
|
4182
|
+
acquireRelease(
|
|
4183
|
+
sync(() => new AbortController()),
|
|
4184
|
+
(controller) => sync(() => controller.abort())
|
|
4185
|
+
),
|
|
4186
|
+
(_) => _.signal
|
|
4187
|
+
)
|
|
4188
|
+
|
|
4180
4189
|
// ========================================================================
|
|
4181
4190
|
// collecting & elements
|
|
4182
4191
|
// ========================================================================
|
|
@@ -316,7 +316,10 @@ class WebHttpClientResponse extends Inspectable.Class implements HttpClientRespo
|
|
|
316
316
|
|
|
317
317
|
private textBody?: Effect.Effect<string, Error.HttpClientError>
|
|
318
318
|
get text(): Effect.Effect<string, Error.HttpClientError> {
|
|
319
|
-
|
|
319
|
+
if (this.textBody) {
|
|
320
|
+
return this.textBody
|
|
321
|
+
}
|
|
322
|
+
this.textBody = Effect.tryPromise({
|
|
320
323
|
try: () => this.source.text(),
|
|
321
324
|
catch: (cause) =>
|
|
322
325
|
new Error.HttpClientError({
|
|
@@ -327,6 +330,8 @@ class WebHttpClientResponse extends Inspectable.Class implements HttpClientRespo
|
|
|
327
330
|
})
|
|
328
331
|
})
|
|
329
332
|
}).pipe(Effect.cached, Effect.runSync)
|
|
333
|
+
this.arrayBufferBody = Effect.map(this.textBody, (_) => new TextEncoder().encode(_).buffer)
|
|
334
|
+
return this.textBody
|
|
330
335
|
}
|
|
331
336
|
|
|
332
337
|
get urlParamsBody(): Effect.Effect<UrlParams.UrlParams, Error.HttpClientError> {
|
|
@@ -361,7 +366,10 @@ class WebHttpClientResponse extends Inspectable.Class implements HttpClientRespo
|
|
|
361
366
|
|
|
362
367
|
private arrayBufferBody?: Effect.Effect<ArrayBuffer, Error.HttpClientError>
|
|
363
368
|
get arrayBuffer(): Effect.Effect<ArrayBuffer, Error.HttpClientError> {
|
|
364
|
-
|
|
369
|
+
if (this.arrayBufferBody) {
|
|
370
|
+
return this.arrayBufferBody
|
|
371
|
+
}
|
|
372
|
+
this.arrayBufferBody = Effect.tryPromise({
|
|
365
373
|
try: () => this.source.arrayBuffer(),
|
|
366
374
|
catch: (cause) =>
|
|
367
375
|
new Error.HttpClientError({
|
|
@@ -372,6 +380,8 @@ class WebHttpClientResponse extends Inspectable.Class implements HttpClientRespo
|
|
|
372
380
|
})
|
|
373
381
|
})
|
|
374
382
|
}).pipe(Effect.cached, Effect.runSync)
|
|
383
|
+
this.textBody = Effect.map(this.arrayBufferBody, (_) => new TextDecoder().decode(_))
|
|
384
|
+
return this.arrayBufferBody
|
|
375
385
|
}
|
|
376
386
|
|
|
377
387
|
pipe() {
|
|
@@ -684,54 +684,85 @@ export const builder = <A extends AsyncResult<any, any>>(self: A): Builder<
|
|
|
684
684
|
never,
|
|
685
685
|
A extends Success<infer _A, infer _E> ? _A : never,
|
|
686
686
|
A extends Failure<infer _A, infer _E> ? _E : never,
|
|
687
|
-
A extends Initial<infer _A, infer _E> ? true : never
|
|
687
|
+
A extends Initial<infer _A, infer _E> ? true : never,
|
|
688
|
+
A extends Failure<infer _A, infer _E> ? Defect | Interrupt : never
|
|
688
689
|
> => new BuilderImpl(self) as any
|
|
689
690
|
|
|
690
691
|
/**
|
|
691
692
|
* @since 4.0.0
|
|
692
693
|
* @category Builder
|
|
693
694
|
*/
|
|
694
|
-
export
|
|
695
|
+
export interface Defect {
|
|
696
|
+
readonly _: unique symbol
|
|
697
|
+
}
|
|
698
|
+
|
|
699
|
+
/**
|
|
700
|
+
* @since 4.0.0
|
|
701
|
+
* @category Builder
|
|
702
|
+
*/
|
|
703
|
+
export interface Interrupt {
|
|
704
|
+
readonly _: unique symbol
|
|
705
|
+
}
|
|
706
|
+
|
|
707
|
+
/**
|
|
708
|
+
* @since 4.0.0
|
|
709
|
+
* @category Builder
|
|
710
|
+
*/
|
|
711
|
+
export type Builder<Out, A, E, I, F> =
|
|
695
712
|
& Pipeable
|
|
696
713
|
& {
|
|
697
|
-
onWaiting<B>(f: (result: AsyncResult<A, E>) => B): Builder<Out | B, A, E, I>
|
|
698
|
-
onDefect<B>(f: (defect: unknown, result: Failure<A, E>) => B): Builder<Out | B, A, E, I>
|
|
714
|
+
onWaiting<B>(f: (result: AsyncResult<A, E>) => B): Builder<Out | B, A, E, I, F>
|
|
699
715
|
orElse<B>(orElse: LazyArg<B>): Out | B
|
|
700
716
|
orNull(): Out | null
|
|
701
717
|
render(): [A | I] extends [never] ? Out : Out | null
|
|
702
718
|
}
|
|
703
|
-
& ([I] extends [never] ? {
|
|
719
|
+
& ([A | E | I | F] extends [never] ? {
|
|
720
|
+
exhaustive(): Out
|
|
721
|
+
} :
|
|
722
|
+
unknown)
|
|
723
|
+
& ([I] extends [never] ? unknown :
|
|
704
724
|
{
|
|
705
|
-
onInitial<B>(f: (result: Initial<A, E>) => B): Builder<Out | B, A, E, never>
|
|
706
|
-
onInitialOrWaiting<B>(f: (result: AsyncResult<A, E>) => B): Builder<Out | B, A, E, never>
|
|
725
|
+
onInitial<B>(f: (result: Initial<A, E>) => B): Builder<Out | B, A, E, never, F>
|
|
726
|
+
onInitialOrWaiting<B>(f: (result: AsyncResult<A, E>) => B): Builder<Out | B, A, E, never, F>
|
|
707
727
|
})
|
|
708
|
-
& ([A] extends [never] ?
|
|
728
|
+
& ([A] extends [never] ? unknown :
|
|
709
729
|
{
|
|
710
|
-
onSuccess<B>(f: (value: A, result: Success<A, E>) => B): Builder<Out | B, never, E, I>
|
|
730
|
+
onSuccess<B>(f: (value: A, result: Success<A, E>) => B): Builder<Out | B, never, E, I, F>
|
|
711
731
|
})
|
|
712
|
-
& ([E] extends [never] ?
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
onError<B>(f: (error: E, result: Failure<A, E>) => B): Builder<Out | B, A, never, I>
|
|
732
|
+
& ([E] extends [never] ? unknown : {
|
|
733
|
+
onError<B>(f: (error: E, result: Failure<A, E>) => B): Builder<Out | B, A, never, I, F>
|
|
716
734
|
|
|
717
735
|
onErrorIf<B extends E, C>(
|
|
718
736
|
refinement: Refinement<E, B>,
|
|
719
737
|
f: (error: B, result: Failure<A, E>) => C
|
|
720
|
-
): Builder<Out | C, A, Types.EqualsWith<E, B, E, Exclude<E, B>>, I>
|
|
738
|
+
): Builder<Out | C, A, Types.EqualsWith<E, B, E, Exclude<E, B>>, I, F>
|
|
721
739
|
onErrorIf<C>(
|
|
722
740
|
predicate: Predicate<E>,
|
|
723
741
|
f: (error: E, result: Failure<A, E>) => C
|
|
724
|
-
): Builder<Out | C, A, E, I>
|
|
742
|
+
): Builder<Out | C, A, E, I, F>
|
|
725
743
|
|
|
726
744
|
onErrorTag<const Tags extends ReadonlyArray<Types.Tags<E>>, B>(
|
|
727
745
|
tags: Tags,
|
|
728
746
|
f: (error: Types.ExtractTag<E, Tags[number]>, result: Failure<A, E>) => B
|
|
729
|
-
): Builder<Out | B, A, Types.ExcludeTag<E, Tags[number]>, I>
|
|
747
|
+
): Builder<Out | B, A, Types.ExcludeTag<E, Tags[number]>, I, F>
|
|
730
748
|
onErrorTag<const Tag extends Types.Tags<E>, B>(
|
|
731
749
|
tag: Tag,
|
|
732
750
|
f: (error: Types.ExtractTag<E, Tag>, result: Failure<A, E>) => B
|
|
733
|
-
): Builder<Out | B, A, Types.ExcludeTag<E, Tag>, I>
|
|
751
|
+
): Builder<Out | B, A, Types.ExcludeTag<E, Tag>, I, F>
|
|
734
752
|
})
|
|
753
|
+
& ([E | F] extends [never] ? unknown : {
|
|
754
|
+
onFailure<B>(f: (cause: Cause.Cause<E>, result: Failure<A, E>) => B): Builder<Out | B, A, never, I, never>
|
|
755
|
+
})
|
|
756
|
+
& (Interrupt extends F ? {
|
|
757
|
+
onInterrupt<B>(
|
|
758
|
+
f: (interruptors: ReadonlySet<number>, result: Failure<A, E>) => B
|
|
759
|
+
): Builder<Out | B, A, E, I, Exclude<F, Interrupt>>
|
|
760
|
+
} :
|
|
761
|
+
unknown)
|
|
762
|
+
& (Defect extends F ? {
|
|
763
|
+
onDefect<B>(f: (defect: unknown, result: Failure<A, E>) => B): Builder<Out | B, A, E, I, Exclude<F, Defect>>
|
|
764
|
+
} :
|
|
765
|
+
unknown)
|
|
735
766
|
|
|
736
767
|
class BuilderImpl<Out, A, E> {
|
|
737
768
|
constructor(result: AsyncResult<A, E>) {
|
|
@@ -817,6 +848,13 @@ class BuilderImpl<Out, A, E> {
|
|
|
817
848
|
})
|
|
818
849
|
}
|
|
819
850
|
|
|
851
|
+
onInterrupt<B>(f: (interruptors: ReadonlySet<number>, result: Failure<A, E>) => B): BuilderImpl<Out | B, A, E> {
|
|
852
|
+
return this.when(isFailure, (result) => {
|
|
853
|
+
const interruptors = Cause.filterInterruptors(result.cause)
|
|
854
|
+
return Result.isFailure(interruptors) ? Option.none() : Option.some(f(interruptors.success, result))
|
|
855
|
+
})
|
|
856
|
+
}
|
|
857
|
+
|
|
820
858
|
orElse<B>(orElse: LazyArg<B>): Out | B {
|
|
821
859
|
return Option.getOrElse(this.output, orElse)
|
|
822
860
|
}
|
|
@@ -833,6 +871,10 @@ class BuilderImpl<Out, A, E> {
|
|
|
833
871
|
}
|
|
834
872
|
return null
|
|
835
873
|
}
|
|
874
|
+
|
|
875
|
+
exhaustive(): Out {
|
|
876
|
+
return this.render() as Out
|
|
877
|
+
}
|
|
836
878
|
}
|
|
837
879
|
|
|
838
880
|
/**
|
|
@@ -46,6 +46,11 @@ export interface SqlClient extends Constructor {
|
|
|
46
46
|
self: Effect.Effect<A, E, R>
|
|
47
47
|
) => Effect.Effect<A, E | SqlError, R>
|
|
48
48
|
|
|
49
|
+
/**
|
|
50
|
+
* The transaction service for this client.
|
|
51
|
+
*/
|
|
52
|
+
readonly transactionService: Context.Service<TransactionConnection, TransactionConnection.Service>
|
|
53
|
+
|
|
49
54
|
/**
|
|
50
55
|
* Use the Reactivity service from @effect/experimental to create a reactive
|
|
51
56
|
* query.
|
|
@@ -85,6 +90,7 @@ export namespace SqlClient {
|
|
|
85
90
|
readonly compiler: Compiler
|
|
86
91
|
readonly transactionAcquirer?: Connection.Acquirer
|
|
87
92
|
readonly spanAttributes: ReadonlyArray<readonly [string, unknown]>
|
|
93
|
+
readonly transactionService?: Context.Service<TransactionConnection, TransactionConnection.Service>
|
|
88
94
|
readonly beginTransaction?: string | undefined
|
|
89
95
|
readonly rollback?: string | undefined
|
|
90
96
|
readonly commit?: string | undefined
|
|
@@ -98,13 +104,16 @@ export namespace SqlClient {
|
|
|
98
104
|
}
|
|
99
105
|
}
|
|
100
106
|
|
|
107
|
+
let clientIdCounter = 0
|
|
108
|
+
|
|
101
109
|
/**
|
|
102
110
|
* @category constructors
|
|
103
111
|
* @since 4.0.0
|
|
104
112
|
*/
|
|
105
113
|
export const make = Effect.fnUntraced(function*(options: SqlClient.MakeOptions) {
|
|
114
|
+
const transactionService = options.transactionService ?? TransactionConnection(clientIdCounter++)
|
|
106
115
|
const getConnection = Effect.flatMap(
|
|
107
|
-
Effect.serviceOption(
|
|
116
|
+
Effect.serviceOption(transactionService),
|
|
108
117
|
Option.match({
|
|
109
118
|
onNone: () => options.acquirer,
|
|
110
119
|
onSome: ([conn]) => Effect.succeed(conn)
|
|
@@ -118,7 +127,7 @@ export const make = Effect.fnUntraced(function*(options: SqlClient.MakeOptions)
|
|
|
118
127
|
const rollbackSavepoint = options.rollbackSavepoint ?? ((name: string) => `ROLLBACK TO SAVEPOINT ${name}`)
|
|
119
128
|
const transactionAcquirer = options.transactionAcquirer ?? options.acquirer
|
|
120
129
|
const withTransaction = makeWithTransaction({
|
|
121
|
-
transactionService
|
|
130
|
+
transactionService,
|
|
122
131
|
spanAttributes: options.spanAttributes,
|
|
123
132
|
acquireConnection: Effect.flatMap(
|
|
124
133
|
Scope.make(),
|
|
@@ -138,6 +147,7 @@ export const make = Effect.fnUntraced(function*(options: SqlClient.MakeOptions)
|
|
|
138
147
|
[TypeId]: TypeId as typeof TypeId,
|
|
139
148
|
safe: undefined as any,
|
|
140
149
|
withTransaction,
|
|
150
|
+
transactionService,
|
|
141
151
|
reserve: transactionAcquirer,
|
|
142
152
|
withoutTransforms(): any {
|
|
143
153
|
if (options.transformRows === undefined) {
|
|
@@ -189,8 +199,8 @@ export const makeWithTransaction = <I, S>(options: {
|
|
|
189
199
|
readonly rollback: (conn: NoInfer<S>) => Effect.Effect<void, SqlError>
|
|
190
200
|
readonly rollbackSavepoint: (conn: NoInfer<S>, id: number) => Effect.Effect<void, SqlError>
|
|
191
201
|
}) =>
|
|
192
|
-
<R, E, A>(effect: Effect.Effect<A, E, R>): Effect.Effect<A, E | SqlError, R> =>
|
|
193
|
-
Effect.uninterruptibleMask((restore) =>
|
|
202
|
+
<R, E, A>(effect: Effect.Effect<A, E, R>): Effect.Effect<A, E | SqlError, R> => {
|
|
203
|
+
return Effect.uninterruptibleMask((restore) =>
|
|
194
204
|
Effect.useSpan(
|
|
195
205
|
"sql.transaction",
|
|
196
206
|
{ kind: "client" },
|
|
@@ -249,15 +259,32 @@ export const makeWithTransaction = <I, S>(options: {
|
|
|
249
259
|
})
|
|
250
260
|
)
|
|
251
261
|
)
|
|
262
|
+
}
|
|
252
263
|
|
|
253
264
|
/**
|
|
254
265
|
* @since 4.0.0
|
|
255
266
|
*/
|
|
256
|
-
export
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
267
|
+
export interface TransactionConnection {
|
|
268
|
+
readonly _: unique symbol
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
/**
|
|
272
|
+
* @since 4.0.0
|
|
273
|
+
*/
|
|
274
|
+
export declare namespace TransactionConnection {
|
|
275
|
+
/**
|
|
276
|
+
* @since 4.0.0
|
|
277
|
+
*/
|
|
278
|
+
export type Service = readonly [conn: Connection.Connection, depth: number]
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
/**
|
|
282
|
+
* @since 4.0.0
|
|
283
|
+
*/
|
|
284
|
+
export const TransactionConnection = (
|
|
285
|
+
clientId: number
|
|
286
|
+
): Context.Service<TransactionConnection, TransactionConnection.Service> =>
|
|
287
|
+
Context.Service(`effect/sql/SqlClient/TransactionConnection/${clientId}`)
|
|
261
288
|
|
|
262
289
|
/**
|
|
263
290
|
* @since 4.0.0
|
|
@@ -102,7 +102,7 @@ export const ordered = <Req extends Schema.Top, Res extends Schema.Top, _, E, R>
|
|
|
102
102
|
E | ResultLengthMismatch,
|
|
103
103
|
Req["EncodingServices"] | Res["DecodingServices"] | R
|
|
104
104
|
>,
|
|
105
|
-
SqlClient.TransactionConnection
|
|
105
|
+
SqlClient.TransactionConnection.Service | undefined
|
|
106
106
|
>({
|
|
107
107
|
key: transactionKey,
|
|
108
108
|
resolver: Effect.fnUntraced(function*(entries) {
|
|
@@ -158,7 +158,7 @@ export const grouped = <Req extends Schema.Top, Res extends Schema.Top, K, Row,
|
|
|
158
158
|
E | Schema.SchemaError | Cause.NoSuchElementError,
|
|
159
159
|
Req["EncodingServices"] | Res["DecodingServices"] | R
|
|
160
160
|
>,
|
|
161
|
-
SqlClient.TransactionConnection
|
|
161
|
+
SqlClient.TransactionConnection.Service | undefined
|
|
162
162
|
>({
|
|
163
163
|
key: transactionKey,
|
|
164
164
|
resolver: Effect.fnUntraced(function*(entries) {
|
|
@@ -224,13 +224,9 @@ export const findById = <Id extends Schema.Top, Res extends Schema.Top, Row, E,
|
|
|
224
224
|
E | Schema.SchemaError | Cause.NoSuchElementError,
|
|
225
225
|
Id["EncodingServices"] | Res["DecodingServices"] | R
|
|
226
226
|
>,
|
|
227
|
-
SqlClient.TransactionConnection
|
|
227
|
+
SqlClient.TransactionConnection.Service | undefined
|
|
228
228
|
>({
|
|
229
|
-
key
|
|
230
|
-
const conn = entry.context.mapUnsafe.get(SqlClient.TransactionConnection.key)
|
|
231
|
-
if (!conn) return undefined
|
|
232
|
-
return Equal.byReferenceUnsafe(conn)
|
|
233
|
-
},
|
|
229
|
+
key: transactionKey,
|
|
234
230
|
resolver: Effect.fnUntraced(function*(entries) {
|
|
235
231
|
const [inputs, idMap] = yield* partitionRequestsById(entries, options.Id)
|
|
236
232
|
const results = yield* options.execute(inputs as any).pipe(
|
|
@@ -281,7 +277,7 @@ const void_ = <Req extends Schema.Top, _, E, R>(
|
|
|
281
277
|
E | Schema.SchemaError,
|
|
282
278
|
Req["EncodingServices"] | R
|
|
283
279
|
>,
|
|
284
|
-
SqlClient.TransactionConnection
|
|
280
|
+
SqlClient.TransactionConnection.Service | undefined
|
|
285
281
|
>({
|
|
286
282
|
key: transactionKey,
|
|
287
283
|
resolver: Effect.fnUntraced(function*(entries) {
|
|
@@ -359,8 +355,10 @@ const partitionRequestsById = function*<In, A, E, R, InE>(
|
|
|
359
355
|
return [inputs, byIdMap] as const
|
|
360
356
|
}
|
|
361
357
|
|
|
362
|
-
function transactionKey<A>(entry: Request.Entry<A>): SqlClient.TransactionConnection
|
|
363
|
-
const
|
|
358
|
+
function transactionKey<A>(entry: Request.Entry<A>): SqlClient.TransactionConnection.Service | undefined {
|
|
359
|
+
const client = entry.context.mapUnsafe.get(SqlClient.SqlClient.key)
|
|
360
|
+
if (!client) return undefined
|
|
361
|
+
const conn = entry.context.mapUnsafe.get(client.transactionService.key)
|
|
364
362
|
if (!conn) return undefined
|
|
365
363
|
return Equal.byReferenceUnsafe(conn)
|
|
366
364
|
}
|