adk_artifact_service behaviour (erlang_adk v0.7.0)
View SourceBehaviour for immutable, versioned binary artifacts.
Artifact names are logical names within an explicit application, user, or session scope. Implementations must create a new positive version on every successful put; an existing version is never overwritten.
Summary
Types
-type artifact() :: #{scope := scope(), name := binary(), version := pos_integer(), mime_type := binary(), digest := binary(), size := non_neg_integer(), created_at := integer(), metadata := map(), data := binary()}.
-type artifact_meta() :: #{scope := scope(), name := binary(), version := pos_integer(), mime_type := binary(), digest := binary(), size := non_neg_integer(), created_at := integer(), metadata := map()}.
-type call_options() :: #{timeout_ms => pos_integer()}.
-type delete_selector() :: selector() | all.
-type handle() :: term().
-type name_page_options() :: #{limit => pos_integer(), cursor => binary()}.
-type selector() :: pos_integer() | latest.
-type version_page() :: #{items := [artifact_meta()], next_cursor := pos_integer() | undefined}.
-type version_page_options() :: #{limit => pos_integer(), cursor => pos_integer()}.
Callbacks
-callback delete(Handle :: handle(), Scope :: scope(), Name :: binary(), Selector :: delete_selector()) -> ok | {error, not_found | term()}.
-callback delete(Handle :: handle(), Scope :: scope(), Name :: binary(), Selector :: delete_selector(), CallOptions :: call_options()) -> ok | {error, not_found | term()}.
-callback list(Handle :: handle(), Scope :: scope()) -> {ok, [artifact_meta()]} | {error, term()}.
-callback list_names(Handle :: handle(), Scope :: scope(), Options :: name_page_options()) -> {ok, name_page()} | {error, term()}.
-callback list_versions(Handle :: handle(), Scope :: scope(), Name :: binary(), Options :: version_page_options()) -> {ok, version_page()} | {error, term()}.
-callback put(Handle :: handle(), Scope :: scope(), Name :: binary(), Data :: binary(), Options :: map(), CallOptions :: call_options()) -> {ok, artifact_meta()} | {error, term()}.