Package-level declarations

Types

Link copied to clipboard
sealed class DataResult<out T>

The outcome of a database operation, which either carries a value or the failure that replaced it.

Link copied to clipboard

Hands out queries and sessions, and runs transactions over them. That is all it is.

Link copied to clipboard
internal class OctaviusClientImpl(provider: SessionProvider, onClose: () -> Unit? = null, dynamicJson: Json = octaviusJson, dynamicWriteStrategy: DynamicWriteStrategy = DynamicWriteStrategy.AUTOMATIC_WHEN_UNAMBIGUOUS) : OctaviusClient

The only implementation of OctaviusClient. Everything it does, it does through its SessionProvider.

Link copied to clipboard
internal class RollbackSignal(val failure: DataResult.Failure) : RuntimeException

Carries a DataResult.Failure out through a transaction that only understands exceptions.

Functions

Link copied to clipboard
inline fun <T> dbResult(crossinline block: () -> T): DataResult<T>

Runs block and hands back what it produced as a DataResult, turning the failures an application is expected to handle into DataResult.Failure and letting the ones that mean broken code go on being thrown.

Link copied to clipboard
inline fun <R, T : R> DataResult<T>.getOrElse(onFailure: (DataResult.Failure) -> R): R

Returns the carried value, or what onFailure makes of the failure.

Link copied to clipboard
fun <T> DataResult<T>.getOrNull(): T?

Returns the carried value, or null where the operation failed.

Link copied to clipboard

Returns the carried value, throwing the failure in its place.

Link copied to clipboard

Whether this failure says the calling code is wrong, rather than that the operation did not work out.

Link copied to clipboard
inline fun <T, R> DataResult<T>.map(transform: (T) -> R): DataResult<R>

Applies transform to the value of a DataResult.Success, and returns a DataResult.Failure as it stands.

Link copied to clipboard
inline fun <T> DataResult<T>.onFailure(action: (OctaviusException) -> Unit): DataResult<T>

Runs action on the failure if this is a DataResult.Failure, and returns this result either way.

Link copied to clipboard
inline fun <T> DataResult<T>.onSuccess(action: (T) -> Unit): DataResult<T>

Runs action on the carried value if this is a DataResult.Success, and returns this result either way.