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