diff --git a/src/drivers/MssqlDriver.ts b/src/drivers/MssqlDriver.ts index 215afb6..329a848 100644 --- a/src/drivers/MssqlDriver.ts +++ b/src/drivers/MssqlDriver.ts @@ -536,9 +536,7 @@ WHERE TABLE_TYPE='BASE TABLE' and TABLE_SCHEMA in (${schema}) AND TABLE_CATALOG if (defaultValue.startsWith("(") && defaultValue.endsWith(")")) { defaultValue = defaultValue.slice(1, -1); } - if (defaultValue.startsWith(`'`)) { - return `() => "${defaultValue}"`; - } + return `() => "${defaultValue}"`; } } diff --git a/src/drivers/MysqlDriver.ts b/src/drivers/MysqlDriver.ts index 81b5928..976cca4 100644 --- a/src/drivers/MysqlDriver.ts +++ b/src/drivers/MysqlDriver.ts @@ -545,6 +545,7 @@ export default class MysqlDriver extends AbstractDriver { if (dataType === "set") { return `() => ['${defaultValue.split(",").join("','")}']`; } + return `() => "'${defaultValue}'"`; } } diff --git a/src/drivers/OracleDriver.ts b/src/drivers/OracleDriver.ts index 3914b06..2282887 100644 --- a/src/drivers/OracleDriver.ts +++ b/src/drivers/OracleDriver.ts @@ -417,9 +417,7 @@ export default class OracleDriver extends AbstractDriver { if (defaultVal.endsWith(" ")) { defaultVal = defaultVal.slice(0, -1); } - if (defaultVal.startsWith(`'`)) { - return `() => "${defaultVal}"`; - } + return `() => "${defaultVal}"`; } } diff --git a/src/drivers/PostgresDriver.ts b/src/drivers/PostgresDriver.ts index 6655abb..a882c1b 100644 --- a/src/drivers/PostgresDriver.ts +++ b/src/drivers/PostgresDriver.ts @@ -116,7 +116,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( @@ -663,15 +664,17 @@ export default class PostgresDriver extends AbstractDriver { } private static ReturnDefaultValueFunction( - defVal: string | null + defVal: string | null, + dataType: string ): string | undefined { let defaultValue = defVal; if (!defaultValue) { return undefined; } defaultValue = defaultValue.replace(/'::[\w ]*/, "'"); - if (defaultValue.startsWith(`'`)) { - 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 ecadaa3..eaee1d3 100644 --- a/src/drivers/SqliteDriver.ts +++ b/src/drivers/SqliteDriver.ts @@ -452,9 +452,7 @@ export default class SqliteDriver extends AbstractDriver { if (!defVal) { return undefined; } - if (defVal.startsWith(`'`)) { - 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 2462b5d..8fa85b2 100644 --- a/test/integration/runTestsFromPath.test.ts +++ b/test/integration/runTestsFromPath.test.ts @@ -137,6 +137,10 @@ function runTestForMultipleDrivers( return dbDrivers.filter(dbDriver => ["mysql", "mariadb"].includes(dbDriver) ); + case "248": + return dbDrivers.filter(dbDriver => + dbDriver === "postgres" + ); default: return dbDrivers; }