ExStorageService.Storage.Versioning (ex_storage_service v0.6.3)

Copy Markdown View Source

Compatibility facade for bucket versioning.

New writes use immutable v2 version records and one atomic metadata transaction. Legacy v1 records remain readable, but no mutable v2 version list exists.

Summary

Types

versioning_state()

@type versioning_state() :: :disabled | :enabled | :suspended

Functions

delete_version(bucket, key)

delete_version(bucket, key, version_id)

@spec delete_version(String.t(), String.t(), String.t() | nil) ::
  {:ok, String.t(), :delete_marker | :deleted} | {:error, term()}

get_version(bucket, key, version_id)

@spec get_version(String.t(), String.t(), String.t() | nil) ::
  {:ok, map()} | {:error, :not_found | term()}

get_versioning(bucket)

@spec get_versioning(String.t()) :: versioning_state()

list_versions(bucket, key)

@spec list_versions(String.t(), String.t()) :: {:ok, [map()]}

put_version(bucket, key, metadata)

@spec put_version(String.t(), String.t(), map()) ::
  {:ok, String.t()} | {:error, term()}

set_versioning(bucket, state)

@spec set_versioning(String.t(), versioning_state()) :: :ok | {:error, term()}