Fix quotes on columns in checks
This commit is contained in:
parent
897c125e3b
commit
9e2bb48fb8
@ -92,7 +92,7 @@ export function fromMariaDB(ast, diagramDb = DB.GENERIC) {
|
||||
}
|
||||
field.check = "";
|
||||
if (d.check) {
|
||||
field.check = buildSQLFromAST(d.check.definition[0]);
|
||||
field.check = buildSQLFromAST(d.check.definition[0], DB.MARIADB);
|
||||
}
|
||||
|
||||
table.fields.push(field);
|
||||
|
@ -104,7 +104,7 @@ export function fromMSSQL(ast, diagramDb = DB.GENERIC) {
|
||||
}
|
||||
field.check = "";
|
||||
if (d.check) {
|
||||
field.check = buildSQLFromAST(d.check.definition[0]);
|
||||
field.check = buildSQLFromAST(d.check.definition[0], DB.MSSQL);
|
||||
}
|
||||
|
||||
table.fields.push(field);
|
||||
|
@ -92,7 +92,7 @@ export function fromMySQL(ast, diagramDb = DB.GENERIC) {
|
||||
}
|
||||
field.check = "";
|
||||
if (d.check) {
|
||||
field.check = buildSQLFromAST(d.check.definition[0]);
|
||||
field.check = buildSQLFromAST(d.check.definition[0], DB.MYSQL);
|
||||
}
|
||||
|
||||
table.fields.push(field);
|
||||
|
@ -92,7 +92,7 @@ export function fromPostgres(ast, diagramDb = DB.GENERIC) {
|
||||
}
|
||||
field.check = "";
|
||||
if (d.check) {
|
||||
field.check = buildSQLFromAST(d.check.definition[0]);
|
||||
field.check = buildSQLFromAST(d.check.definition[0], DB.POSTGRES);
|
||||
}
|
||||
|
||||
table.fields.push(field);
|
||||
|
@ -1,7 +1,24 @@
|
||||
export function buildSQLFromAST(ast) {
|
||||
import { DB } from "../../data/constants";
|
||||
|
||||
function quoteColumn(str, db) {
|
||||
switch (db) {
|
||||
case DB.MYSQL:
|
||||
return `\`${str}\``;
|
||||
case DB.SQLITE:
|
||||
return `"${str}"`;
|
||||
case DB.POSTGRES:
|
||||
return `"${str}"`;
|
||||
case DB.MSSQL:
|
||||
return `[${str}]`;
|
||||
case DB.MARIADB:
|
||||
return `\`${str}\``;
|
||||
}
|
||||
}
|
||||
|
||||
export function buildSQLFromAST(ast, db = DB.MYSQL) {
|
||||
if (ast.type === "binary_expr") {
|
||||
const leftSQL = buildSQLFromAST(ast.left);
|
||||
const rightSQL = buildSQLFromAST(ast.right);
|
||||
const leftSQL = buildSQLFromAST(ast.left, db);
|
||||
const rightSQL = buildSQLFromAST(ast.right, db);
|
||||
return `${leftSQL} ${ast.operator} ${rightSQL}`;
|
||||
}
|
||||
|
||||
@ -26,7 +43,7 @@ export function buildSQLFromAST(ast) {
|
||||
}
|
||||
return expr;
|
||||
} else if (ast.type === "column_ref") {
|
||||
return "`" + ast.column + "`";
|
||||
return quoteColumn(ast.column, db);
|
||||
} else if (ast.type === "expr_list") {
|
||||
return ast.value.map((v) => v.value).join(" AND ");
|
||||
} else {
|
||||
|
@ -110,7 +110,7 @@ export function fromSQLite(ast, diagramDb = DB.GENERIC) {
|
||||
}
|
||||
field.check = "";
|
||||
if (d.check) {
|
||||
field.check = buildSQLFromAST(d.check.definition[0]);
|
||||
field.check = buildSQLFromAST(d.check.definition[0], DB.SQLITE);
|
||||
}
|
||||
|
||||
table.fields.push(field);
|
||||
|
Loading…
Reference in New Issue
Block a user