defmodule Ecto.Adapter.Storage do @moduledoc """ Specifies the adapter storage API. """ @doc """ Creates the storage given by options. Returns `:ok` if it was created successfully. Returns `{:error, :already_up}` if the storage has already been created or `{:error, term}` in case anything else goes wrong. ## Examples storage_up(username: "postgres", database: "ecto_test", hostname: "localhost") """ @callback storage_up(options :: Keyword.t) :: :ok | {:error, :already_up} | {:error, term} @doc """ Drops the storage given by options. Returns `:ok` if it was dropped successfully. Returns `{:error, :already_down}` if the storage has already been dropped or `{:error, term}` in case anything else goes wrong. ## Examples storage_down(username: "postgres", database: "ecto_test", hostname: "localhost") """ @callback storage_down(options :: Keyword.t) :: :ok | {:error, :already_down} | {:error, term} @doc """ Returns the status of a storage given by options. Can return `:up`, `:down` or `{:error, term}` in case anything goes wrong. ## Examples storage_status(username: "postgres", database: "ecto_test", hostname: "localhost") """ @callback storage_status(options :: Keyword.t()) :: :up | :down | {:error, term()} end