Dsxir. OptimizerSession. Store behaviour
(dsxir v0.2.0)
Copy Markdown
Behaviour for OptimizerSession checkpoint persistence.
Two reference implementations ship in dsxir:
Dsxir.OptimizerSession.Store.ETS- named table, in-memory, application-supervised.Dsxir.OptimizerSession.Store.File- JSON or binary files with atomic temp-file-plus-rename writes.
Consumers wire their own Postgres / S3 / etc by implementing the four callbacks.
Summary
Functions
Resolve a store: option shortcut into a {module, opts} tuple.
Types
@type filter() :: keyword()
@type listing() :: %{ session_id: session_id(), status: atom(), updated_at: DateTime.t(), optimizer: module(), best_score: float() | nil }
@type opts() :: keyword()
@type session_id() :: String.t()
Callbacks
@callback delete_checkpoint(opts(), session_id()) :: :ok | {:error, term()}
@callback get_checkpoint(opts(), session_id()) :: {:ok, Dsxir.OptimizerSession.Checkpoint.t()} | {:error, :not_found | term()}
@callback put_checkpoint(opts(), session_id(), Dsxir.OptimizerSession.Checkpoint.t()) :: :ok | {:error, term()}
Functions
Resolve a store: option shortcut into a {module, opts} tuple.
Accepts:
:ets->{Dsxir.OptimizerSession.Store.ETS, []}:file->{Dsxir.OptimizerSession.Store.File, dir: "priv/dsxir/sessions", format: :binary}{module, opts}-> passed through.
Honors Application.get_env(:dsxir, :default_session_store, ...) for default override.
The compile-time default is configured via config :dsxir, :default_session_store, ...
(defaults to :file outside of test).