Merge pull request #256 from dustinsmith1024/dustin/json-fix

fixing json default value typescript parsing errors
This commit is contained in:
Kononnable 2020-03-28 13:56:56 +01:00 committed by GitHub
commit d09bfeef0f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 37 additions and 13 deletions

View File

@ -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}"`;
}
}

View File

@ -545,6 +545,7 @@ export default class MysqlDriver extends AbstractDriver {
if (dataType === "set") {
return `() => ['${defaultValue.split(",").join("','")}']`;
}
return `() => "'${defaultValue}'"`;
}
}

View File

@ -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}"`;
}
}

View File

@ -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}"`;
}

View File

@ -452,9 +452,7 @@ export default class SqliteDriver extends AbstractDriver {
if (!defVal) {
return undefined;
}
if (defVal.startsWith(`'`)) {
return `() => "${defVal}"`;
}
return `() => "${defVal}"`;
}
}

View File

@ -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;
}

View File

@ -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;
}