MyAnimeList.TokenStore behaviour (myanimelist v0.1.0)

Copy Markdown View Source

Behaviour for persisting per-owner MAL tokens.

MyAnimeList ships no schema or database dependency — you supply storage against your own app (Ecto table, ETS, a GenServer, anything). Implement these three callbacks and MyAnimeList stays out of your persistence layer entirely. owner is whatever key identifies a user in your app (a user id, a struct, …).

defmodule MyApp.MALTokens do
  @behaviour MyAnimeList.TokenStore

  @impl true
  def get_token(user_id), do: # → %MyAnimeList.Token{} | nil

  @impl true
  def put_token(user_id, token), do: # persist, → :ok

  @impl true
  def delete_token(user_id), do: # → :ok
end

Summary

Callbacks

delete_token(owner)

@callback delete_token(owner :: term()) :: :ok | {:error, term()}

get_token(owner)

@callback get_token(owner :: term()) :: MyAnimeList.Token.t() | nil

put_token(owner, t)

@callback put_token(owner :: term(), MyAnimeList.Token.t()) :: :ok | {:error, term()}