Packages
avrora
0.13.0
0.30.2
0.30.1
0.30.0
0.29.2
0.29.1
0.29.0
0.28.0
0.27.0
0.26.0
0.25.0
0.24.2
0.24.1
0.24.0
0.23.0
0.22.0
0.21.1
0.21.0
0.20.0
0.19.0
0.18.1
0.18.0
0.17.0
0.16.0
0.15.0
0.14.1
0.14.0
0.13.0
0.12.0
0.11.0
0.10.0
0.9.1
0.9.0
0.8.1
0.8.0
0.7.1
0.7.0
0.6.0
0.5.1
0.5.0
0.4.0
0.3.1
0.3.0
0.2.2
0.2.1
0.2.0
0.1.1-beta
0.1.0-beta
An Elixir library for working with Avro messages conveniently. It supports local schema files and Confluent® schema registry.
Current section
Files
Jump to
Current section
Files
lib/avrora/storage.ex
defmodule Avrora.Storage do
@moduledoc """
Behavior for storing and getting schemas by name or integer ID.
"""
@typedoc "Schema indentifier."
@type schema_id :: String.t() | integer()
@callback get(key :: schema_id) ::
{:ok, result :: nil | Avrora.Schema.t()} | {:error, reason :: term()}
@callback put(key :: schema_id, value :: Avrora.Schema.t()) ::
{:ok, result :: Avrora.Schema.t()} | {:error, reason :: term()}
defmodule Transient do
@moduledoc """
Storage behavior which allows keys to be removed or expired.
"""
alias Avrora.Storage
@typedoc "Naive timestamp with second precision."
@type timestamp :: timeout()
@callback delete(key :: Storage.schema_id()) ::
{:ok, result :: boolean()} | {:error, reason :: term()}
@callback expire(key :: Storage.schema_id(), ttl :: timeout()) ::
{:ok, timestamp :: timestamp()} | {:error, reason :: term()}
@callback flush() :: {:ok, result :: boolean()} | {:error, reason :: term()}
end
end