defmodule ExCheckout.Repo do
use Ecto.Repo,
otp_app: :ex_checkout,
adapter: Ecto.Adapters.Postgres
@doc """
Dynamically loads the repository url from the
DATABASE_URL environment variable.
"""
def init(arg, nil) do
init(arg, [])
end
def init(_, opts) do
{:ok, Keyword.put(opts, :url, System.get_env("DATABASE_URL"))}
end
@doc """
Empty the Database Table
"""
def truncate(schema) do
table_name = schema.__schema__(:source)
query("TRUNCATE #{table_name}", [])
end
end
defmodule ExCheckout.Repo.Null do
use GenServer
alias ExCheckout.Product
def child_spec(init) do
%{
id: __MODULE__,
start: {__MODULE__, :start_link, [init]},
restart: :transient,
type: :worker
}
end
def start_link([]) do
GenServer.start_link(__MODULE__, [], name: :ex_null_repo)
end
def init(init_arg) do
{:ok, init_arg}
end
def get_by(_, value, :sku) do
%Product{sku: value}
end
end