mirror of
https://github.com/philomena-dev/philomena.git
synced 2025-01-20 06:37:59 +01:00
26 lines
586 B
Elixir
26 lines
586 B
Elixir
defmodule Philomena.Repo do
|
|
alias Ecto.Multi
|
|
|
|
use Ecto.Repo,
|
|
otp_app: :philomena,
|
|
adapter: Ecto.Adapters.Postgres
|
|
|
|
use Scrivener, page_size: 250
|
|
|
|
@levels %{
|
|
read_committed: "READ COMMITTED",
|
|
repeatable_read: "REPEATABLE READ",
|
|
serializable: "SERIALIZABLE"
|
|
}
|
|
|
|
def isolated_transaction(%Multi{} = multi, level) do
|
|
Multi.append(
|
|
Multi.new |> Multi.run(:isolate, fn repo, _chg ->
|
|
repo.query!("SET TRANSACTION ISOLATION LEVEL #{@levels[level]}")
|
|
{:ok, nil}
|
|
end),
|
|
multi
|
|
)
|
|
|> Philomena.Repo.transaction()
|
|
end
|
|
end
|