trait DataSource[-R, -A] extends AnyRef
A DataSource[R, A]
is capable of executing requests of type A
that
require an environment R
.
Data sources must implement the method run
which takes a collection of
requests and returns an effect with a CompletedRequestMap
containing a
mapping from requests to results. Because run
is parameterized on a
collection of requests rather than a single request, data sources have the
ability to introspect on all the requests being executed in parallel and
optimize the query.
Data sources will typically be parameterized on a subtype of Request[A]
,
though that is not strictly necessarily as long as the data source can map
the request type to a Request[A]
. Data sources can then pattern match on
the collection of requests to determine the information requested, execute
the query, and place the results into the CompletedRequestsMap
using
CompletedRequestMap.empty and CompletedRequestMap.insert. Data
sources must provide results for all requests received. Failure to do so
will cause a query to die with a QueryFailure
when run.
- Self Type
- DataSource[R, A]
- Alphabetic
- By Inheritance
- DataSource
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Abstract Value Members
- abstract val identifier: String
The data source's identifier.
- abstract def run(requests: Iterable[A]): ZIO[R, Nothing, CompletedRequestMap]
Execute a collection of requests.
Execute a collection of requests. Data sources are guaranteed that the collection will contain at least one request and that all requests will be unique when they are called by
ZQuery
.
Concrete Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- final def contramap[B](f: Described[(B) => A]): DataSource[R, B]
Returns a new data source that executes requests of type
B
using the specified function to transformB
requests into requests that this data source can execute. - final def contramapM[R1 <: R, B](f: Described[(B) => ZIO[R1, Nothing, A]]): DataSource[R1, B]
Returns a new data source that executes requests of type
B
using the specified effectual function to transformB
requests into requests that this data source can execute. - final def eitherWith[R1 <: R, B, C](that: DataSource[R1, B])(f: Described[(C) => Either[A, B]]): DataSource[R1, C]
Returns a new data source that executes requests of type
C
using the specified function to transformC
requests into requests that either this data source or that data source can execute. - final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def equals(that: Any): Boolean
- Definition Classes
- DataSource → AnyRef → Any
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- final def hashCode(): Int
- Definition Classes
- DataSource → AnyRef → Any
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def provide(r: Described[R])(implicit ev: NeedsEnv[R]): DataSource[Any, A]
Provides this data source with its required environment.
- final def provideSome[R0](f: Described[(R0) => R])(implicit ev: NeedsEnv[R]): DataSource[R0, A]
Provides this data source with part of its required environment.
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- final def toString(): String
- Definition Classes
- DataSource → AnyRef → Any
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()