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 | |
| 9 | params = %{ |
| 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 | |
| 28 | if !Supavisor.Tenants.get_tenant_by_external_id(params["external_id"]) do |
| 29 | {:ok, _} = Supavisor.Tenants.create_tenant(params) |
| 30 | end |