From 0ddd689b893ff05010ff2c4920fe035e4502fb79 Mon Sep 17 00:00:00 2001 From: Rory Powell Date: Wed, 27 Oct 2021 16:21:19 +0100 Subject: [PATCH] Postgres: Use another schema other than 'public' --- packages/server/src/integrations/postgres.ts | 21 ++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/packages/server/src/integrations/postgres.ts b/packages/server/src/integrations/postgres.ts index abd1fa9286..3cf1bdb3e0 100644 --- a/packages/server/src/integrations/postgres.ts +++ b/packages/server/src/integrations/postgres.ts @@ -27,6 +27,7 @@ module PostgresModule { database: string user: string password: string + schema: string ssl?: boolean ca?: string rejectUnauthorized?: boolean @@ -64,6 +65,11 @@ module PostgresModule { default: "root", required: true, }, + schema: { + type: DatasourceFieldTypes.STRING, + default: "public", + required: true, + }, ssl: { type: DatasourceFieldTypes.BOOLEAN, default: false, @@ -137,8 +143,7 @@ module PostgresModule { private readonly client: any private readonly config: PostgresConfig - COLUMNS_SQL = - "select * from information_schema.columns where not table_schema = 'information_schema' and not table_schema = 'pg_catalog'" + COLUMNS_SQL!: string PRIMARY_KEYS_SQL = ` select tc.table_schema, tc.table_name, kc.column_name as primary_key @@ -168,6 +173,18 @@ module PostgresModule { } this.client = this.pool + this.setSchema() + + } + + setSchema() { + if (!this.config.schema) { + this.config.schema = 'public' + } + this.client.on('connect', (client: any) => { + client.query(`SET search_path TO ${this.config.schema}`); + }); + this.COLUMNS_SQL = `select * from information_schema.columns where table_schema = '${this.config.schema}'` } /**