src/store.bend relies on unsafe/foreign
raw source on the hub · import 0x36c893ade1f158581b4c8c34eb3b510e/src/store.bend as Store
1 import
import Base
Types
type Store source · line 5 · raw
Data
A Store is a scoped filesystem database. Opening it initializes or validates Stiff's private schema; no process-global service or connection is installed.
Store@path:String -> Store
type OpenResult source · line 8 · raw
Data
StoreReady@store:Store -> OpenResult
StoreOpenError@code:String -> @message:String -> OpenResult
type ReadResult source · line 12 · raw
Data
StoreFound@version:U32 -> @value:String -> ReadResult
StoreMissingReadResult
StoreReadError@code:String -> @message:String -> ReadResult
type WriteResult source · line 19 · raw
Data
A replay is the durable result of the same operation ID and identical input. Reusing an operation ID with different input is an idempotency conflict.
StoreApplied@version:U32 -> WriteResult
StoreReplayed@version:U32 -> WriteResult
StoreVersionConflict@current_version:U32 -> @current_value:String -> WriteResult
StoreReplayedVersionConflict@current_version:U32 -> @current_value:String -> WriteResult
StoreMissingConflictWriteResult
StoreReplayedMissingConflictWriteResult
StoreIdempotencyConflictWriteResult
StoreWriteError@code:String -> @message:String -> WriteResult
type OperationResult source · line 31 · raw
Data
Operation lookup is the reconciliation path after a caller loses a result. Retry compare_write with exactly the same input to recover the complete result.
StoreOperationApplied@key:String -> @version:U32 -> OperationResult
StoreOperationVersionConflict@key:String -> @current_version:U32 -> OperationResult
StoreOperationMissingConflict@key:String -> OperationResult
StoreOperationUnknownOperationResult
StoreOperationError@code:String -> @message:String -> OperationResult
Effects (foreign code)
effect Store.open source · line 38 · raw
@path:String -> IO(OpenResult)
foreign: src/effects/store.c
effect Store.read source · line 41 · raw
@+store:Store -> @key:String -> IO(ReadResult)
foreign: src/effects/store.c
effect Store.compare_write source · line 46 · raw
@+store:Store -> @operation_id:String -> @key:String -> @expected_version:U32 -> @value:String -> IO(WriteResult)
expected_version 0 creates an absent key. A positive version replaces only that exact version. The write and its operation receipt commit atomically.
foreign: src/effects/store.c
effect Store.operation source · line 50 · raw
@+store:Store -> @operation_id:String -> IO(OperationResult)
foreign: src/effects/store.c