Fix field precision and size input and parsing

This commit is contained in:
1ilit 2024-04-22 13:05:46 +03:00
parent 898d81d6e9
commit 4a87935412
3 changed files with 8 additions and 14 deletions

View File

@ -123,9 +123,9 @@ export default function FieldDetails({ data, tid, index }) {
<div className="font-semibold">Precision</div>
<Input
className="my-2 w-full"
placeholder="Set precision: (size, d)"
placeholder="Set precision: size, d"
validateStatus={
!data.size || /^\(\d+,\s*\d+\)$|^$/.test(data.size)
!data.size || /^\d+,\s*\d+$|^$/.test(data.size)
? "default"
: "error"
}

View File

@ -60,8 +60,7 @@ export function astToDiagram(ast) {
}
if (d.definition["length"]) {
if (d.definition.scale) {
field.size =
"(" + d.definition["length"] + "," + d.definition.scale + ")";
field.size = d.definition["length"] + "," + d.definition.scale;
} else {
field.size = d.definition["length"];
}
@ -114,13 +113,11 @@ export function astToDiagram(ast) {
}
}
});
tables.push(table);
tables.forEach((e, i) => {
e.id = i;
e.fields.forEach((f, j) => {
f.id = j;
});
table.fields.forEach((f, j) => {
f.id = j;
});
table.id = tables.length;
tables.push(table);
} else if (e.keyword === "index") {
const index = {};
index.name = e.index;

View File

@ -44,10 +44,7 @@ export function getTypeString(field, dbms = "mysql", baseType = false) {
if (field.type === "UUID") {
return `VARCHAR(36)`;
}
if (isSized(field.type)) {
return `${field.type}(${field.size})`;
}
if (hasPrecision(field.type)) {
if (hasPrecision(field.type) || isSized(field.type)) {
return `${field.type}${field.size ? `(${field.size})` : ""}`;
}
if (field.type === "SET" || field.type === "ENUM") {