committed by
Steve Chavez
parent
49d4b9b7db
commit
095d43ff75
@@ -105,3 +105,52 @@ You can only switch to a schema included in :ref:`db-schemas`. Using another sch
|
||||
"message":"The schema must be one of the following: tenant1, tenant2"
|
||||
}
|
||||
|
||||
|
||||
Dynamic schemas
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
To add schemas dynamically, you can use :ref:`in_db_config` plus :ref:`config reloading <config_reloading_notify>` and :ref:`schema cache reloading <schema_reloading_notify>`. Here are some options for how to do this:
|
||||
|
||||
- If the schemas' names have a pattern, like a ``tenant_`` prefix, do:
|
||||
|
||||
.. code-block:: postgresql
|
||||
|
||||
create or replace function postgrest.pre_config()
|
||||
returns void as $$
|
||||
select
|
||||
set_config('pgrst.db_schemas', string_agg(nspname, ','), true)
|
||||
from pg_namespace
|
||||
where nspname like 'tenant_%';
|
||||
$$ language sql;
|
||||
|
||||
- If there's no name pattern but they're created with a particular role (``CREATE SCHEMA mine AUTHORIZATION joe``), do:
|
||||
|
||||
.. code-block:: postgresql
|
||||
|
||||
create or replace function postgrest.pre_config()
|
||||
returns void as $$
|
||||
select
|
||||
set_config('pgrst.db_schemas', string_agg(nspname, ','), true)
|
||||
from pg_namespace
|
||||
where nspowner = 'joe'::regrole;
|
||||
$$ language sql;
|
||||
|
||||
- Otherwise, you might need to create a table that stores the allowed schemas.
|
||||
|
||||
.. code-block:: postgresql
|
||||
|
||||
create table postgrest.config (schemas text);
|
||||
|
||||
create or replace function postgrest.pre_config()
|
||||
returns void as $$
|
||||
select
|
||||
set_config('pgrst.db_schemas', schemas, true)
|
||||
from postgrest.config;
|
||||
$$ language sql;
|
||||
|
||||
Then each time you add an schema, do:
|
||||
|
||||
.. code-block:: postgresql
|
||||
|
||||
NOTIFY pgrst, 'reload config';
|
||||
NOTIFY pgrst, 'reload schema';
|
||||
|
||||
@@ -255,7 +255,7 @@ db-pre-config
|
||||
**In-Database** pgrst.db_pre_config
|
||||
=============== =======================
|
||||
|
||||
Name of the function that does in-database configuration.
|
||||
Name of the function that does :ref:`in_db_config`.
|
||||
|
||||
.. _db-extra-search-path:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user