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 = "";
|
field.check = "";
|
||||||
if (d.check) {
|
if (d.check) {
|
||||||
field.check = buildSQLFromAST(d.check.definition[0]);
|
field.check = buildSQLFromAST(d.check.definition[0], DB.MARIADB);
|
||||||
}
|
}
|
||||||
|
|
||||||
table.fields.push(field);
|
table.fields.push(field);
|
||||||
|
@ -104,7 +104,7 @@ export function fromMSSQL(ast, diagramDb = DB.GENERIC) {
|
|||||||
}
|
}
|
||||||
field.check = "";
|
field.check = "";
|
||||||
if (d.check) {
|
if (d.check) {
|
||||||
field.check = buildSQLFromAST(d.check.definition[0]);
|
field.check = buildSQLFromAST(d.check.definition[0], DB.MSSQL);
|
||||||
}
|
}
|
||||||
|
|
||||||
table.fields.push(field);
|
table.fields.push(field);
|
||||||
|
@ -92,7 +92,7 @@ export function fromMySQL(ast, diagramDb = DB.GENERIC) {
|
|||||||
}
|
}
|
||||||
field.check = "";
|
field.check = "";
|
||||||
if (d.check) {
|
if (d.check) {
|
||||||
field.check = buildSQLFromAST(d.check.definition[0]);
|
field.check = buildSQLFromAST(d.check.definition[0], DB.MYSQL);
|
||||||
}
|
}
|
||||||
|
|
||||||
table.fields.push(field);
|
table.fields.push(field);
|
||||||
|
@ -92,7 +92,7 @@ export function fromPostgres(ast, diagramDb = DB.GENERIC) {
|
|||||||
}
|
}
|
||||||
field.check = "";
|
field.check = "";
|
||||||
if (d.check) {
|
if (d.check) {
|
||||||
field.check = buildSQLFromAST(d.check.definition[0]);
|
field.check = buildSQLFromAST(d.check.definition[0], DB.POSTGRES);
|
||||||
}
|
}
|
||||||
|
|
||||||
table.fields.push(field);
|
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") {
|
if (ast.type === "binary_expr") {
|
||||||
const leftSQL = buildSQLFromAST(ast.left);
|
const leftSQL = buildSQLFromAST(ast.left, db);
|
||||||
const rightSQL = buildSQLFromAST(ast.right);
|
const rightSQL = buildSQLFromAST(ast.right, db);
|
||||||
return `${leftSQL} ${ast.operator} ${rightSQL}`;
|
return `${leftSQL} ${ast.operator} ${rightSQL}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -26,7 +43,7 @@ export function buildSQLFromAST(ast) {
|
|||||||
}
|
}
|
||||||
return expr;
|
return expr;
|
||||||
} else if (ast.type === "column_ref") {
|
} else if (ast.type === "column_ref") {
|
||||||
return "`" + ast.column + "`";
|
return quoteColumn(ast.column, db);
|
||||||
} else if (ast.type === "expr_list") {
|
} else if (ast.type === "expr_list") {
|
||||||
return ast.value.map((v) => v.value).join(" AND ");
|
return ast.value.map((v) => v.value).join(" AND ");
|
||||||
} else {
|
} else {
|
||||||
|
@ -110,7 +110,7 @@ export function fromSQLite(ast, diagramDb = DB.GENERIC) {
|
|||||||
}
|
}
|
||||||
field.check = "";
|
field.check = "";
|
||||||
if (d.check) {
|
if (d.check) {
|
||||||
field.check = buildSQLFromAST(d.check.definition[0]);
|
field.check = buildSQLFromAST(d.check.definition[0], DB.SQLITE);
|
||||||
}
|
}
|
||||||
|
|
||||||
table.fields.push(field);
|
table.fields.push(field);
|
||||||
|
Loading…
Reference in New Issue
Block a user