Current section

Files

Jump to
pi_bridge lib pi integrations ecto.ex
Raw

lib/pi/integrations/ecto.ex

if Code.ensure_loaded?(Ecto.Repo) do
defmodule Pi.Integrations.Ecto do
@moduledoc "Ecto-specific project status discovery."
@behaviour Pi.Integration
alias Pi.Protocol.Integration.Status
def name, do: :ecto
def repos do
for {app, _, _} <- Application.started_applications(),
repo <- Application.get_env(app, :ecto_repos, []) do
%{module: inspect(repo), app: app, running: running?(repo)}
end
end
def statuses do
case repos() do
[] ->
[]
repos ->
[%Status{key: :ecto, text: "ecto #{Enum.count(repos, & &1.running)}/#{length(repos)}"}]
end
end
defp running?(repo), do: Process.whereis(repo) != nil
end
end