From c6538f8c67a81f79139ff0e46ff5b11479f532f0 Mon Sep 17 00:00:00 2001 From: Kononnable Date: Sat, 28 Mar 2020 09:51:47 +0100 Subject: [PATCH] add test; changes are necessary only in postgres driver it's the only one where typeorm support default value for json fields --- src/drivers/MssqlDriver.ts | 2 +- src/drivers/MysqlDriver.ts | 2 +- src/drivers/OracleDriver.ts | 2 +- src/drivers/PostgresDriver.ts | 11 +++++++--- src/drivers/SqliteDriver.ts | 2 +- .../github-issues/248/entity/Post.ts | 22 +++++++++++++++++++ test/integration/runTestsFromPath.test.ts | 4 ++++ 7 files changed, 38 insertions(+), 7 deletions(-) create mode 100644 test/integration/github-issues/248/entity/Post.ts diff --git a/src/drivers/MssqlDriver.ts b/src/drivers/MssqlDriver.ts index a610581..bc5bde6 100644 --- a/src/drivers/MssqlDriver.ts +++ b/src/drivers/MssqlDriver.ts @@ -520,6 +520,6 @@ WHERE TABLE_TYPE='BASE TABLE' and TABLE_SCHEMA in (${schema}) AND TABLE_CATALOG defaultValue = defaultValue.slice(1, -1); } - return `() => \`${defaultValue}\``; + return `() => "${defaultValue}"`; } } diff --git a/src/drivers/MysqlDriver.ts b/src/drivers/MysqlDriver.ts index 3dfaa28..32ac292 100644 --- a/src/drivers/MysqlDriver.ts +++ b/src/drivers/MysqlDriver.ts @@ -530,6 +530,6 @@ export default class MysqlDriver extends AbstractDriver { return `() => ['${defaultValue.split(",").join("','")}']`; } - return `() => \`${defaultValue}\``; + return `() => "'${defaultValue}'"`; } } diff --git a/src/drivers/OracleDriver.ts b/src/drivers/OracleDriver.ts index 2ac5791..0c75678 100644 --- a/src/drivers/OracleDriver.ts +++ b/src/drivers/OracleDriver.ts @@ -417,6 +417,6 @@ export default class OracleDriver extends AbstractDriver { defaultVal = defaultVal.slice(0, -1); } - return `() => \`${defaultVal}\``; + return `() => "${defaultVal}"`; } } diff --git a/src/drivers/PostgresDriver.ts b/src/drivers/PostgresDriver.ts index a032f58..ca26e93 100644 --- a/src/drivers/PostgresDriver.ts +++ b/src/drivers/PostgresDriver.ts @@ -103,7 +103,8 @@ export default class PostgresDriver extends AbstractDriver { const defaultValue = generated ? undefined : PostgresDriver.ReturnDefaultValueFunction( - resp.column_default + resp.column_default, + resp.data_type ); const columnTypes = this.MatchColumnTypes( @@ -648,7 +649,8 @@ export default class PostgresDriver extends AbstractDriver { } private static ReturnDefaultValueFunction( - defVal: string | null + defVal: string | null, + dataType: string ): string | undefined { let defaultValue = defVal; if (!defaultValue) { @@ -656,6 +658,9 @@ export default class PostgresDriver extends AbstractDriver { } defaultValue = defaultValue.replace(/'::[\w ]*/, "'"); - return `() => \`${defaultValue}\``; + if (["json", "jsonb"].some(x => x === dataType)) { + return `${defaultValue.slice(1, defaultValue.length - 1)}`; + } + return `() => "${defaultValue}"`; } } diff --git a/src/drivers/SqliteDriver.ts b/src/drivers/SqliteDriver.ts index e29140c..ab0d2f5 100644 --- a/src/drivers/SqliteDriver.ts +++ b/src/drivers/SqliteDriver.ts @@ -437,6 +437,6 @@ export default class SqliteDriver extends AbstractDriver { return undefined; } - return `() => \`${defVal}\``; + return `() => "${defVal}"`; } } diff --git a/test/integration/github-issues/248/entity/Post.ts b/test/integration/github-issues/248/entity/Post.ts new file mode 100644 index 0000000..18675fb --- /dev/null +++ b/test/integration/github-issues/248/entity/Post.ts @@ -0,0 +1,22 @@ +import { PrimaryGeneratedColumn, Column, Entity, OneToOne, JoinColumn, Index } from "typeorm"; + +@Entity("Post") +export class Post { + + @PrimaryGeneratedColumn() + id: number; + + @Column("json", { + default: { type: null, values: true } + }) + data: object; + + @Column("jsonb", { + default: { type: null, values: true } + }) + data2: object; + + @Column() + text: string; + +} diff --git a/test/integration/runTestsFromPath.test.ts b/test/integration/runTestsFromPath.test.ts index 9b52340..9ee1a62 100644 --- a/test/integration/runTestsFromPath.test.ts +++ b/test/integration/runTestsFromPath.test.ts @@ -132,6 +132,10 @@ function runTestForMultipleDrivers( return dbDrivers.filter(dbDriver => ["mysql", "mariadb"].includes(dbDriver) ); + case "248": + return dbDrivers.filter(dbDriver => + dbDriver === "postgres" + ); default: return dbDrivers; }