1
1
package zio .query
2
2
3
- import zio .{ Chunk , ZEnvironment , ZIO , ZTraceElement }
3
+ import zio .{ Chunk , Trace , ZEnvironment , ZIO }
4
4
import zio .stacktracer .TracingImplicits .disableAutoTrace
5
5
6
6
/**
@@ -36,15 +36,15 @@ trait DataSource[-R, -A] { self =>
36
36
* of requests that must be performed sequentially. The inner `Chunk`
37
37
* represents a batch of requests that can be performed in parallel.
38
38
*/
39
- def runAll (requests : Chunk [Chunk [A ]])(implicit trace : ZTraceElement ): ZIO [R , Nothing , CompletedRequestMap ]
39
+ def runAll (requests : Chunk [Chunk [A ]])(implicit trace : Trace ): ZIO [R , Nothing , CompletedRequestMap ]
40
40
41
41
/**
42
42
* Returns a data source that executes at most `n` requests in parallel.
43
43
*/
44
44
def batchN (n : Int ): DataSource [R , A ] =
45
45
new DataSource [R , A ] {
46
46
val identifier = s " ${self}.batchN( $n) "
47
- def runAll (requests : Chunk [Chunk [A ]])(implicit trace : ZTraceElement ): ZIO [R , Nothing , CompletedRequestMap ] =
47
+ def runAll (requests : Chunk [Chunk [A ]])(implicit trace : Trace ): ZIO [R , Nothing , CompletedRequestMap ] =
48
48
if (n < 1 )
49
49
ZIO .die(new IllegalArgumentException (" batchN: n must be at least 1" ))
50
50
else
@@ -59,7 +59,7 @@ trait DataSource[-R, -A] { self =>
59
59
final def contramap [B ](f : Described [B => A ]): DataSource [R , B ] =
60
60
new DataSource [R , B ] {
61
61
val identifier = s " ${self.identifier}.contramap( ${f.description}) "
62
- def runAll (requests : Chunk [Chunk [B ]])(implicit trace : ZTraceElement ): ZIO [R , Nothing , CompletedRequestMap ] =
62
+ def runAll (requests : Chunk [Chunk [B ]])(implicit trace : Trace ): ZIO [R , Nothing , CompletedRequestMap ] =
63
63
self.runAll(requests.map(_.map(f.value)))
64
64
}
65
65
@@ -80,7 +80,7 @@ trait DataSource[-R, -A] { self =>
80
80
final def contramapZIO [R1 <: R , B ](f : Described [B => ZIO [R1 , Nothing , A ]]): DataSource [R1 , B ] =
81
81
new DataSource [R1 , B ] {
82
82
val identifier = s " ${self.identifier}.contramapZIO( ${f.description}) "
83
- def runAll (requests : Chunk [Chunk [B ]])(implicit trace : ZTraceElement ): ZIO [R1 , Nothing , CompletedRequestMap ] =
83
+ def runAll (requests : Chunk [Chunk [B ]])(implicit trace : Trace ): ZIO [R1 , Nothing , CompletedRequestMap ] =
84
84
ZIO .foreach(requests)(ZIO .foreachPar(_)(f.value)).flatMap(self.runAll)
85
85
}
86
86
@@ -94,7 +94,7 @@ trait DataSource[-R, -A] { self =>
94
94
)(f : Described [C => Either [A , B ]]): DataSource [R1 , C ] =
95
95
new DataSource [R1 , C ] {
96
96
val identifier = s " ${self.identifier}.eitherWith( ${that.identifier})( ${f.description}) "
97
- def runAll (requests : Chunk [Chunk [C ]])(implicit trace : ZTraceElement ): ZIO [R1 , Nothing , CompletedRequestMap ] =
97
+ def runAll (requests : Chunk [Chunk [C ]])(implicit trace : Trace ): ZIO [R1 , Nothing , CompletedRequestMap ] =
98
98
ZIO
99
99
.foreach(requests) { requests =>
100
100
val (as, bs) = requests.partitionMap(f.value)
@@ -143,7 +143,7 @@ trait DataSource[-R, -A] { self =>
143
143
): DataSource [R0 , A ] =
144
144
new DataSource [R0 , A ] {
145
145
val identifier = s " ${self.identifier}.provideSomeEnvironment( ${f.description}) "
146
- def runAll (requests : Chunk [Chunk [A ]])(implicit trace : ZTraceElement ): ZIO [R0 , Nothing , CompletedRequestMap ] =
146
+ def runAll (requests : Chunk [Chunk [A ]])(implicit trace : Trace ): ZIO [R0 , Nothing , CompletedRequestMap ] =
147
147
self.runAll(requests).provideSomeEnvironment(f.value)
148
148
}
149
149
@@ -155,7 +155,7 @@ trait DataSource[-R, -A] { self =>
155
155
final def race [R1 <: R , A1 <: A ](that : DataSource [R1 , A1 ]): DataSource [R1 , A1 ] =
156
156
new DataSource [R1 , A1 ] {
157
157
val identifier = s " ${self.identifier}.race( ${that.identifier}) "
158
- def runAll (requests : Chunk [Chunk [A1 ]])(implicit trace : ZTraceElement ): ZIO [R1 , Nothing , CompletedRequestMap ] =
158
+ def runAll (requests : Chunk [Chunk [A1 ]])(implicit trace : Trace ): ZIO [R1 , Nothing , CompletedRequestMap ] =
159
159
self.runAll(requests).race(that.runAll(requests))
160
160
}
161
161
@@ -171,8 +171,8 @@ object DataSource {
171
171
* performed sequentially.
172
172
*/
173
173
trait Batched [- R , - A ] extends DataSource [R , A ] {
174
- def run (requests : Chunk [A ])(implicit trace : ZTraceElement ): ZIO [R , Nothing , CompletedRequestMap ]
175
- final def runAll (requests : Chunk [Chunk [A ]])(implicit trace : ZTraceElement ): ZIO [R , Nothing , CompletedRequestMap ] =
174
+ def run (requests : Chunk [A ])(implicit trace : Trace ): ZIO [R , Nothing , CompletedRequestMap ]
175
+ final def runAll (requests : Chunk [Chunk [A ]])(implicit trace : Trace ): ZIO [R , Nothing , CompletedRequestMap ] =
176
176
ZIO .foldLeft(requests)(CompletedRequestMap .empty) { case (completedRequestMap, requests) =>
177
177
val newRequests = requests.filterNot(completedRequestMap.contains)
178
178
if (newRequests.isEmpty) ZIO .succeedNow(completedRequestMap)
@@ -189,7 +189,7 @@ object DataSource {
189
189
def make [R , A ](name : String )(f : Chunk [A ] => ZIO [R , Nothing , CompletedRequestMap ]): DataSource [R , A ] =
190
190
new DataSource .Batched [R , A ] {
191
191
val identifier : String = name
192
- def run (requests : Chunk [A ])(implicit trace : ZTraceElement ): ZIO [R , Nothing , CompletedRequestMap ] =
192
+ def run (requests : Chunk [A ])(implicit trace : Trace ): ZIO [R , Nothing , CompletedRequestMap ] =
193
193
f(requests)
194
194
}
195
195
}
@@ -202,7 +202,7 @@ object DataSource {
202
202
)(f : A => B )(implicit ev : A <:< Request [Nothing , B ]): DataSource [Any , A ] =
203
203
new DataSource .Batched [Any , A ] {
204
204
val identifier : String = name
205
- def run (requests : Chunk [A ])(implicit trace : ZTraceElement ): ZIO [Any , Nothing , CompletedRequestMap ] =
205
+ def run (requests : Chunk [A ])(implicit trace : Trace ): ZIO [Any , Nothing , CompletedRequestMap ] =
206
206
ZIO .succeedNow(requests.foldLeft(CompletedRequestMap .empty)((map, k) => map.insert(k)(Right (f(k)))))
207
207
}
208
208
@@ -263,7 +263,7 @@ object DataSource {
263
263
)(f : Chunk [A ] => ZIO [R , E , Chunk [Option [B ]]])(implicit ev : A <:< Request [E , B ]): DataSource [R , A ] =
264
264
new DataSource .Batched [R , A ] {
265
265
val identifier : String = name
266
- def run (requests : Chunk [A ])(implicit trace : ZTraceElement ): ZIO [R , Nothing , CompletedRequestMap ] =
266
+ def run (requests : Chunk [A ])(implicit trace : Trace ): ZIO [R , Nothing , CompletedRequestMap ] =
267
267
f(requests)
268
268
.fold(
269
269
e => requests.map((_, Left (e))),
@@ -317,7 +317,7 @@ object DataSource {
317
317
): DataSource [R , A ] =
318
318
new DataSource .Batched [R , A ] {
319
319
val identifier : String = name
320
- def run (requests : Chunk [A ])(implicit trace : ZTraceElement ): ZIO [R , Nothing , CompletedRequestMap ] =
320
+ def run (requests : Chunk [A ])(implicit trace : Trace ): ZIO [R , Nothing , CompletedRequestMap ] =
321
321
f(requests)
322
322
.fold(
323
323
e => requests.map(a => (ev(a), Left (e))),
@@ -339,7 +339,7 @@ object DataSource {
339
339
)(f : Chunk [A ] => ZIO [R , E , Chunk [B ]])(implicit ev : A <:< Request [E , B ]): DataSource [R , A ] =
340
340
new DataSource .Batched [R , A ] {
341
341
val identifier : String = name
342
- def run (requests : Chunk [A ])(implicit trace : ZTraceElement ): ZIO [R , Nothing , CompletedRequestMap ] =
342
+ def run (requests : Chunk [A ])(implicit trace : Trace ): ZIO [R , Nothing , CompletedRequestMap ] =
343
343
f(requests)
344
344
.fold(
345
345
e => requests.map((_, Left (e))),
@@ -367,7 +367,7 @@ object DataSource {
367
367
)(f : A => ZIO [R , E , B ])(implicit ev : A <:< Request [E , B ]): DataSource [R , A ] =
368
368
new DataSource .Batched [R , A ] {
369
369
val identifier : String = name
370
- def run (requests : Chunk [A ])(implicit trace : ZTraceElement ): ZIO [R , Nothing , CompletedRequestMap ] =
370
+ def run (requests : Chunk [A ])(implicit trace : Trace ): ZIO [R , Nothing , CompletedRequestMap ] =
371
371
ZIO
372
372
.foreachPar(requests)(a => f(a).either.map((a, _)))
373
373
.map(_.foldLeft(CompletedRequestMap .empty) { case (map, (k, v)) => map.insert(k)(v) })
@@ -401,7 +401,7 @@ object DataSource {
401
401
)(f : A => ZIO [R , E , Option [B ]])(implicit ev : A <:< Request [E , B ]): DataSource [R , A ] =
402
402
new DataSource .Batched [R , A ] {
403
403
val identifier : String = name
404
- def run (requests : Chunk [A ])(implicit trace : ZTraceElement ): ZIO [R , Nothing , CompletedRequestMap ] =
404
+ def run (requests : Chunk [A ])(implicit trace : Trace ): ZIO [R , Nothing , CompletedRequestMap ] =
405
405
ZIO
406
406
.foreachPar(requests)(a => f(a).either.map((a, _)))
407
407
.map(_.foldLeft(CompletedRequestMap .empty) { case (map, (k, v)) =>
@@ -416,7 +416,7 @@ object DataSource {
416
416
def make [R , A ](name : String )(f : Chunk [Chunk [A ]] => ZIO [R , Nothing , CompletedRequestMap ]): DataSource [R , A ] =
417
417
new DataSource [R , A ] {
418
418
val identifier : String = name
419
- def runAll (requests : Chunk [Chunk [A ]])(implicit trace : ZTraceElement ): ZIO [R , Nothing , CompletedRequestMap ] =
419
+ def runAll (requests : Chunk [Chunk [A ]])(implicit trace : Trace ): ZIO [R , Nothing , CompletedRequestMap ] =
420
420
f(requests)
421
421
}
422
422
@@ -426,7 +426,7 @@ object DataSource {
426
426
val never : DataSource [Any , Any ] =
427
427
new DataSource [Any , Any ] {
428
428
val identifier = " never"
429
- def runAll (requests : Chunk [Chunk [Any ]])(implicit trace : ZTraceElement ): ZIO [Any , Nothing , CompletedRequestMap ] =
429
+ def runAll (requests : Chunk [Chunk [Any ]])(implicit trace : Trace ): ZIO [Any , Nothing , CompletedRequestMap ] =
430
430
ZIO .never
431
431
}
432
432
}
0 commit comments