From 76065733f742a91ed4bf4175c8b98931517e3351 Mon Sep 17 00:00:00 2001 From: Kononnable Date: Sun, 26 Aug 2018 12:37:02 +0200 Subject: [PATCH] #81 postgress support for citext, hstore column types --- src/drivers/PostgresDriver.ts | 24 ++++++++++++++++++- .../entityTypes/postgres/entity/Post.ts | 8 +++---- test/integration/githubIssues.test.ts | 3 --- 3 files changed, 27 insertions(+), 8 deletions(-) diff --git a/src/drivers/PostgresDriver.ts b/src/drivers/PostgresDriver.ts index 989322e..c84beaf 100644 --- a/src/drivers/PostgresDriver.ts +++ b/src/drivers/PostgresDriver.ts @@ -24,6 +24,7 @@ export class PostgresDriver extends AbstractDriver { let response: { table_name: string; column_name: string; + udt_name: string; column_default: string; is_nullable: string; data_type: string; @@ -33,7 +34,7 @@ export class PostgresDriver extends AbstractDriver { isidentity: string; isunique: number; }[] = (await this.Connection - .query(`SELECT table_name,column_name,column_default,is_nullable, + .query(`SELECT table_name,column_name,udt_name,column_default,is_nullable, data_type,character_maximum_length,numeric_precision,numeric_scale, case when column_default LIKE 'nextval%' then 'YES' else 'NO' end isidentity, (SELECT count(*) @@ -244,6 +245,27 @@ export class PostgresDriver extends AbstractDriver { case "daterange": colInfo.ts_type = "string"; break; + case "USER-DEFINED": + switch (resp.udt_name) { + case "citext": + colInfo.sql_type = resp.udt_name; + colInfo.ts_type = "string"; + break; + case "hstore": + colInfo.sql_type = resp.udt_name; + colInfo.ts_type = "string"; + break; + default: + TomgUtils.LogError( + `Unknown USER-DEFINED column type: ${ + resp.udt_name + } table name: ${ + resp.table_name + } column name: ${resp.column_name}` + ); + break; + } + break; default: TomgUtils.LogError( `Unknown column type: ${ diff --git a/test/integration/entityTypes/postgres/entity/Post.ts b/test/integration/entityTypes/postgres/entity/Post.ts index 03e2075..79f26dc 100644 --- a/test/integration/entityTypes/postgres/entity/Post.ts +++ b/test/integration/entityTypes/postgres/entity/Post.ts @@ -66,11 +66,11 @@ export class Post { @Column("text") text: string; - // @Column("citext") - // citext: string; + @Column("citext") + citext: string; - // @Column("hstore") - // hstore: string; + @Column("hstore") + hstore: string; @Column("bytea") bytea: Buffer; diff --git a/test/integration/githubIssues.test.ts b/test/integration/githubIssues.test.ts index 2cb6f8d..1c348ed 100644 --- a/test/integration/githubIssues.test.ts +++ b/test/integration/githubIssues.test.ts @@ -41,9 +41,6 @@ describe("GitHub issues", async function () { if (dbDriver == 'mysql' || dbDriver == 'mariadb' || dbDriver == 'oracle' || dbDriver == 'sqlite') continue; break; - // case '71': - // xit(dbDriver); - // continue; default: break; }