pooler.exs 1.1 KB

123456789101112131415161718192021222324252627282930
  1. {:ok, _} = Application.ensure_all_started(:supavisor)
  2. {:ok, version} =
  3. case Supavisor.Repo.query!("select version()") do
  4. %{rows: [[ver]]} -> Supavisor.Helpers.parse_pg_version(ver)
  5. _ -> nil
  6. end
  7. params = %{
  8. "external_id" => System.get_env("POOLER_TENANT_ID"),
  9. "db_host" => System.get_env("POSTGRES_HOST") || "db",
  10. "db_port" => System.get_env("POSTGRES_PORT"),
  11. "db_database" => System.get_env("POSTGRES_DB"),
  12. "require_user" => false,
  13. "auth_query" => "SELECT * FROM pgbouncer.get_auth($1)",
  14. "default_max_clients" => System.get_env("POOLER_MAX_CLIENT_CONN"),
  15. "default_pool_size" => System.get_env("POOLER_DEFAULT_POOL_SIZE"),
  16. "default_parameter_status" => %{"server_version" => version},
  17. "users" => [%{
  18. "db_user" => "pgbouncer",
  19. "db_password" => System.get_env("POSTGRES_PASSWORD"),
  20. "mode_type" => System.get_env("POOLER_POOL_MODE"),
  21. "pool_size" => System.get_env("POOLER_DEFAULT_POOL_SIZE"),
  22. "is_manager" => true
  23. }]
  24. }
  25. if !Supavisor.Tenants.get_tenant_by_external_id(params["external_id"]) do
  26. {:ok, _} = Supavisor.Tenants.create_tenant(params)
  27. end