set ownership if configured

Signed-off-by: Joep Peeters <joep.peeters@nedap.com>
This commit is contained in:
Joep Peeters
2023-02-17 10:15:19 +01:00
parent 8f50a80732
commit a9f4698a29
@@ -35,6 +35,14 @@ export function createPgDatabaseClient(
) {
const knexConfig = buildPgDatabaseConfig(dbConfig, overrides);
const database = knexFactory(knexConfig);
const owner = dbConfig.getOptionalString('setOwner')
if (owner) {
database.client.pool.on('createSuccess', (_event: any, pgClient: any) => {
pgClient.query(`SET ROLE ${owner}`, () => { });
});
}
return database;
}
@@ -147,10 +155,18 @@ export async function ensurePgSchemaExists(
...schemas: Array<string>
): Promise<void> {
const admin = createPgDatabaseClient(dbConfig);
const setOwner = dbConfig.getOptionalString('setOwner');
try {
const ensureSchema = async (database: string) => {
await admin.raw(`CREATE SCHEMA IF NOT EXISTS ??`, [database]);
if (setOwner) {
await admin.raw(`CREATE SCHEMA IF NOT EXISTS ?? AUTHORIZATION ??`, [
database,
setOwner,
]);
} else {
await admin.raw(`CREATE SCHEMA IF NOT EXISTS ??`, [database]);
}
};
await Promise.all(schemas.map(ensureSchema));