uuuugh
This commit is contained in:
parent
2760f458af
commit
ab0dc2c44e
@ -201,7 +201,7 @@ export default function ReferenceOverview(props) {
|
||||
</label>
|
||||
<Checkbox
|
||||
value="mandetory"
|
||||
defaultChecked={r.mandetory}
|
||||
checked={r.mandetory}
|
||||
onChange={(checkedValues) =>
|
||||
setRelationships((prev) =>
|
||||
prev.map((e, idx) =>
|
||||
|
@ -350,7 +350,7 @@ export default function Table(props) {
|
||||
value === "SMALLINT");
|
||||
updateField(props.tableData.id, j, {
|
||||
type: value,
|
||||
length: value === "VARCHAR" ? 255 : "n/a",
|
||||
length: value === "VARCHAR" ? 255 : "",
|
||||
increment: incr,
|
||||
});
|
||||
}}
|
||||
@ -522,6 +522,7 @@ export default function Table(props) {
|
||||
className="my-2"
|
||||
placeholder="Set constraint"
|
||||
value={f.check}
|
||||
disabled={f.increment}
|
||||
onChange={(value) =>
|
||||
updateField(props.tableData.id, j, { check: value })
|
||||
}
|
||||
@ -547,7 +548,7 @@ export default function Table(props) {
|
||||
<div className="font-medium">Unique</div>
|
||||
<Checkbox
|
||||
value="unique"
|
||||
defaultChecked={f.unique}
|
||||
checked={f.unique}
|
||||
onChange={(checkedValues) => {
|
||||
setUndoStack((prev) => [
|
||||
...prev,
|
||||
@ -579,7 +580,7 @@ export default function Table(props) {
|
||||
<div className="font-medium">Autoincrement</div>
|
||||
<Checkbox
|
||||
value="increment"
|
||||
defaultChecked={f.increment}
|
||||
checked={f.increment}
|
||||
disabled={
|
||||
!(
|
||||
f.type === "INT" ||
|
||||
@ -735,12 +736,51 @@ export default function Table(props) {
|
||||
<Popover
|
||||
content={
|
||||
<div className="px-1">
|
||||
<div className="font-semibold mb-1">Index name: </div>
|
||||
<Input
|
||||
className="my-2"
|
||||
value={idx.name}
|
||||
placeholder="Index name"
|
||||
disabled
|
||||
/>
|
||||
<div className="flex justify-between items-center my-3">
|
||||
<div className="font-medium">Unique</div>
|
||||
<Checkbox
|
||||
value="unique"
|
||||
checked={idx.unique}
|
||||
onChange={(checkedValues) => {
|
||||
setUndoStack((prev) => [
|
||||
...prev,
|
||||
{
|
||||
action: Action.EDIT,
|
||||
element: ObjectType.TABLE,
|
||||
component: "index",
|
||||
tid: props.tableData.id,
|
||||
iid: k,
|
||||
undo: {
|
||||
[checkedValues.target.value]:
|
||||
!checkedValues.target.checked,
|
||||
},
|
||||
redo: {
|
||||
[checkedValues.target.value]:
|
||||
checkedValues.target.checked,
|
||||
},
|
||||
},
|
||||
]);
|
||||
setRedoStack([]);
|
||||
updateTable(props.tableData.id, {
|
||||
indices: props.tableData.indices.map((index) =>
|
||||
index.id === k
|
||||
? {
|
||||
...index,
|
||||
[checkedValues.target.value]:
|
||||
checkedValues.target.checked,
|
||||
}
|
||||
: index
|
||||
),
|
||||
});
|
||||
}}
|
||||
></Checkbox>
|
||||
</div>
|
||||
<Button
|
||||
icon={<IconDeleteStroked />}
|
||||
type="danger"
|
||||
@ -945,6 +985,7 @@ export default function Table(props) {
|
||||
{
|
||||
id: props.tableData.indices.length,
|
||||
name: `index_${props.tableData.indices.length}`,
|
||||
unique: false,
|
||||
fields: [],
|
||||
},
|
||||
],
|
||||
@ -975,7 +1016,7 @@ export default function Table(props) {
|
||||
type: "",
|
||||
default: "",
|
||||
check: "",
|
||||
length: "n/a",
|
||||
length: "",
|
||||
primary: false,
|
||||
unique: false,
|
||||
notNull: false,
|
||||
|
@ -185,7 +185,7 @@ export default function TableOverview(props) {
|
||||
value === "SMALLINT");
|
||||
updateField(i, j, {
|
||||
type: value,
|
||||
length: value === "VARCHAR" ? 255 : "n/a",
|
||||
length: value === "VARCHAR" ? 255 : "",
|
||||
increment: incr,
|
||||
});
|
||||
}}
|
||||
@ -359,6 +359,7 @@ export default function TableOverview(props) {
|
||||
className="my-2"
|
||||
placeholder="Set constraint"
|
||||
value={f.check}
|
||||
disabled={f.increment}
|
||||
onChange={(value) =>
|
||||
updateField(i, j, { check: value })
|
||||
}
|
||||
@ -386,7 +387,7 @@ export default function TableOverview(props) {
|
||||
<div className="font-medium">Unique</div>
|
||||
<Checkbox
|
||||
value="unique"
|
||||
defaultChecked={f.unique}
|
||||
checked={f.unique}
|
||||
onChange={(checkedValues) => {
|
||||
setUndoStack((prev) => [
|
||||
...prev,
|
||||
@ -418,7 +419,7 @@ export default function TableOverview(props) {
|
||||
<div className="font-medium">Autoincrement</div>
|
||||
<Checkbox
|
||||
value="increment"
|
||||
defaultChecked={f.increment}
|
||||
checked={f.increment}
|
||||
disabled={
|
||||
!(
|
||||
f.type === "INT" ||
|
||||
@ -583,12 +584,54 @@ export default function TableOverview(props) {
|
||||
<Popover
|
||||
content={
|
||||
<div className="px-1">
|
||||
<div className="font-semibold mb-1">
|
||||
Index name:{" "}
|
||||
</div>
|
||||
<Input
|
||||
className="my-2"
|
||||
value={idx.name}
|
||||
placeholder="Index name"
|
||||
disabled
|
||||
/>
|
||||
<div className="flex justify-between items-center my-3">
|
||||
<div className="font-medium">Unique</div>
|
||||
<Checkbox
|
||||
value="unique"
|
||||
checked={idx.unique}
|
||||
onChange={(checkedValues) => {
|
||||
setUndoStack((prev) => [
|
||||
...prev,
|
||||
{
|
||||
action: Action.EDIT,
|
||||
element: ObjectType.TABLE,
|
||||
component: "index",
|
||||
tid: i,
|
||||
iid: k,
|
||||
undo: {
|
||||
[checkedValues.target.value]:
|
||||
!checkedValues.target.checked,
|
||||
},
|
||||
redo: {
|
||||
[checkedValues.target.value]:
|
||||
checkedValues.target.checked,
|
||||
},
|
||||
},
|
||||
]);
|
||||
setRedoStack([]);
|
||||
updateTable(i, {
|
||||
indices: t.indices.map((index) =>
|
||||
index.id === k
|
||||
? {
|
||||
...index,
|
||||
[checkedValues.target.value]:
|
||||
checkedValues.target
|
||||
.checked,
|
||||
}
|
||||
: index
|
||||
),
|
||||
});
|
||||
}}
|
||||
></Checkbox>
|
||||
</div>
|
||||
<Button
|
||||
icon={<IconDeleteStroked />}
|
||||
type="danger"
|
||||
@ -804,6 +847,7 @@ export default function TableOverview(props) {
|
||||
{
|
||||
id: t.indices.length,
|
||||
name: `index_${t.indices.length}`,
|
||||
unique: false,
|
||||
fields: [],
|
||||
},
|
||||
],
|
||||
@ -835,7 +879,7 @@ export default function TableOverview(props) {
|
||||
default: "",
|
||||
check: "",
|
||||
primary: false,
|
||||
length: "n/a",
|
||||
length: "",
|
||||
unique: false,
|
||||
notNull: false,
|
||||
increment: false,
|
||||
|
@ -87,7 +87,7 @@ export default function Editor(props) {
|
||||
unique: true,
|
||||
notNull: true,
|
||||
increment: true,
|
||||
length: "n/a",
|
||||
length: "",
|
||||
comment: "",
|
||||
id: 0,
|
||||
},
|
||||
|
@ -43,12 +43,13 @@ const tableSchema = {
|
||||
type: "object",
|
||||
properties: {
|
||||
name: { type: "string" },
|
||||
unique: { type: "boolean" },
|
||||
fields: {
|
||||
type: "array",
|
||||
items: { type: "string" },
|
||||
},
|
||||
},
|
||||
required: ["name", "fields"],
|
||||
required: ["name", "unique", "fields"],
|
||||
},
|
||||
},
|
||||
color: { type: "string", pattern: "^#[0-9a-fA-F]{6}$" },
|
||||
|
@ -59,7 +59,7 @@ function jsonToSQL(obj) {
|
||||
`${field.comment === "" ? "" : `\t-- ${field.comment}\n`}\t\`${
|
||||
field.name
|
||||
}\` ${field.type}${
|
||||
field.length !== "n/a"
|
||||
field.length !== ""
|
||||
? `(${field.length})`
|
||||
: field.type === "ENUM" || field.type === "SET"
|
||||
? `(${field.values.map((v) => `"${v}"`).join(", ")})`
|
||||
@ -67,15 +67,37 @@ function jsonToSQL(obj) {
|
||||
}${field.notNull ? " NOT NULL" : ""}${
|
||||
field.increment ? " AUTO_INCREMENT" : ""
|
||||
}${field.unique ? " UNIQUE" : ""}${
|
||||
field.default !== "" ? ` DEFAULT ${field.default}` : ""
|
||||
},`
|
||||
field.default !== ""
|
||||
? ` DEFAULT ${
|
||||
(field.type === "VARCHAR" || field.type === "ENUM") &&
|
||||
field.default.toLowerCase() !== "null"
|
||||
? `"${field.default}"`
|
||||
: `${field.default}`
|
||||
}`
|
||||
: ""
|
||||
}${field.check === "" ? "" : ` CHECK (${field.check})`}`
|
||||
)
|
||||
.join("\n")}\n\tPRIMARY KEY(${table.fields
|
||||
.join(",\n")}${
|
||||
table.fields.filter((f) => f.primary).length > 0
|
||||
? `,\n\tPRIMARY KEY(${table.fields
|
||||
.filter((f) => f.primary)
|
||||
.map((f) => `\`${f.name}\``)
|
||||
.join(", ")})\n);`
|
||||
.join(", ")})`
|
||||
: ""
|
||||
}\n);\n${
|
||||
table.indices.length > 0
|
||||
? `${table.indices.map(
|
||||
(i) =>
|
||||
`\nCREATE ${i.unique ? "UNIQUE " : ""}INDEX \`${
|
||||
i.name
|
||||
}\`\nON \`${table.name}\` (${i.fields
|
||||
.map((f) => `\`${f}\``)
|
||||
.join(", ")});`
|
||||
)}`
|
||||
: ""
|
||||
}`
|
||||
)
|
||||
.join("\n");
|
||||
.join("\n\n");
|
||||
}
|
||||
|
||||
export {
|
||||
|
Loading…
Reference in New Issue
Block a user