The type used by this action for the state of a suspended stream.
The type used by this action for the state of a suspended stream. A call to emitStream
produces such a state which is then fed back into the next call.
Return the name, main info, attribute info and named children
Return the name, main info, attribute info and named children
Run this action synchronously and produce a result, or throw an Exception to indicate a failure.
A shortcut for andThen
.
A shortcut for andThen
.
Run another action after this action, whether it succeeds or fails, and then return the result of the first action.
Run another action after this action, whether it succeeds or fails, and then return the result of the first action. If the first action fails, its failure is propagated, whether the second action fails or succeeds. If the first action succeeds, a failure of the second action is propagated.
Run another action after this action, if it completed successfully, and return the result of the second action.
Run another action after this action, if it completed successfully, and return the result of the second action. If either of the two actions fails, the resulting action also fails.
Convert a successful result v
of this action into a successful result Success(v)
and a
failure t
into a successful result Failure(t)
.
Convert a successful result v
of this action into a successful result Success(v)
and a
failure t
into a successful result Failure(t)
. This is the most generic combinator that
can be used for error recovery. If possible, use andFinally or cleanUp instead,
because those combinators, unlike asTry
, support streaming.
Dispose of a StreamState
when a streaming action is cancelled.
Dispose of a StreamState
when a streaming action is cancelled. Whenever emitStream
returns null
or throws an Exception, it needs to dispose of the state itself. This
method will not be called in these cases.
Run another action after this action, whether it succeeds or fails, in order to clean up or transform an error produced by this action.
Run another action after this action, whether it succeeds or fails, in order to clean up or
transform an error produced by this action. The clean-up action is computed from the failure
of this action, wrapped in Some
, or None
if this action succeeded.
If this action returns successfully, the resulting action also returns
successfully unless the clean-up action fails. If this action fails and
keepFailure
is set to true
(the default), the resulting action fails
with the same error, no matter whether the clean-up action succeeds or
fails. If keepFailure
is set to false
, an error from the clean-up
action will override the error from this action.
Run this action synchronously and emit results to the context.
Run this action synchronously and emit results to the context. This methods may throw an Exception to indicate a failure.
The maximum number of results to emit, or Long.MaxValue for no limit.
The state returned by a previous invocation of this method, or null
if
a new stream should be produced.
A stream state if there are potentially more results available, or null if the stream is finished.
Return an action which contains the Throwable with which this action failed as its result.
Return an action which contains the Throwable with which this action failed as its result. If this action succeeded, the resulting action fails with a NoSuchElementException.
Filter the result of this action with the given predicate.
Filter the result of this action with the given predicate. If the predicate matches, the original result is returned, otherwise the resulting action fails with a NoSuchElementException.
Use the result produced by the successful execution of this action to compute and then run the next action in sequence.
Use the result produced by the successful execution of this action to compute and then run the next action in sequence. The resulting action fails if either this action, the computation, or the computed action fails.
Whether or not this action should be included in log output by default.
Whether or not this action should be included in log output by default.
Transform the result of a successful execution of this action.
Transform the result of a successful execution of this action. If this action fails, the resulting action also fails.
Get a wrapping action which has a name that will be included in log output.
Get a wrapping action which has a name that will be included in log output.
Get the equivalent non-fused action if this action has been fused, otherwise this action is returned.
Get the equivalent non-fused action if this action has been fused, otherwise this action is returned.
Whether or not this action supports streaming results.
Whether or not this action supports streaming results. An action with a Streaming
result
type must either support streaming directly or have a nonFusedEquivalentAction which
supports streaming. This flag is not used if the Action has a NoStream
result type.
Use a pinned database session when running this action.
Use a pinned database session when running this action. If it is composed of multiple database actions, they will all use the same session, even when sequenced with non-database actions. For non-composite or non-database actions, this has no effect.
Run another action after this action, if it completed successfully, and return the result of both actions.
Run another action after this action, if it completed successfully, and return the result of both actions. If either of the two actions fails, the resulting action also fails.
(synchronousDatabaseAction: StringAdd).self
(synchronousDatabaseAction: StringFormat).self
(synchronousDatabaseAction: ArrowAssoc[SynchronousDatabaseAction[R, S, B, E]]).x
(Since version 2.10.0) Use leftOfArrow
instead
(synchronousDatabaseAction: Ensuring[SynchronousDatabaseAction[R, S, B, E]]).x
(Since version 2.10.0) Use resultOfEnsuring
instead
A synchronous database action provides a function from an
ActionContext
to the result type.DatabaseComponent.DatabaseDef.run
supports this kind of action out of the box throughDatabaseComponent.DatabaseDef.runSynchronousDatabaseAction
so thatrun
does not need to be extended if all primitive database actions can be expressed in this way. These actions also implement construction-time fusion for theandFinally
,andThen
,asTry
,failed
,withPinnedSession
andzip
operations.The execution engine ensures that an ActionContext is never used concurrently and that all state changes performed by one invocation of a SynchronousDatabaseAction are visible to the next invocation of the same or a different SynchronousDatabaseAction.