Skip to content

Commit 2a2c92b

Browse files
authored
Fix some cases of dbml export (#544)
* Fix some cases of dbml export * revert table id logic * change function quotes to dbml case only
1 parent 92d4adb commit 2a2c92b

File tree

2 files changed

+19
-6
lines changed

2 files changed

+19
-6
lines changed

src/utils/exportAs/dbml.js

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,27 @@
11
import { Cardinality } from "../../data/constants";
22
import { dbToTypes } from "../../data/datatypes";
33
import i18n from "../../i18n/i18n";
4-
import { escapeQuotes, parseDefault } from "../exportSQL/shared";
4+
import { escapeQuotes } from "../exportSQL/shared";
5+
import { isFunction, isKeyword } from "../utils";
6+
7+
function parseDefaultDbml(field, database) {
8+
if (isFunction(field.default)) {
9+
return `\`${field.default}\``;
10+
}
11+
12+
if (isKeyword(field.default) || !dbToTypes[database][field.type].hasQuotes) {
13+
return field.default;
14+
}
15+
16+
return `'${escapeQuotes(field.default)}'`;
17+
}
518

619
function columnDefault(field, database) {
720
if (!field.default || field.default.trim() === "") {
821
return "";
922
}
1023

11-
return `default: ${parseDefault(field, database)}`;
24+
return `default: ${parseDefaultDbml(field, database)}`;
1225
}
1326

1427
function columnComment(field) {
@@ -27,7 +40,7 @@ function columnSettings(field, database) {
2740
field.notNull && constraints.push("not null");
2841
field.unique && constraints.push("unique");
2942
constraints.push(columnDefault(field, database));
30-
constraints.push(columnComment(field, database));
43+
constraints.push(columnComment(field));
3144

3245
constraints = constraints.filter((x) => Boolean(x));
3346

@@ -99,7 +112,7 @@ export function toDBML(diagram) {
99112
.join("\n\n")}${enumDefinitions}${diagram.tables
100113
.map(
101114
(table) =>
102-
`Table ${table.name} {\n${table.fields
115+
`Table ${table.name} [headercolor: ${table.color}] {\n${table.fields
103116
.map(
104117
(field) =>
105118
`\t${field.name} ${
@@ -119,7 +132,7 @@ export function toDBML(diagram) {
119132
(index) =>
120133
`\t\t(${index.fields.join(", ")}) [ name: '${
121134
index.name
122-
}'${index.unique ? " unique" : ""} ]`,
135+
}'${index.unique ? ", unique" : ""} ]`,
123136
)
124137
.join("\n") +
125138
"\n\t}"

src/utils/importFrom/dbml.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ export function fromDBML(src) {
1818
parsedTable.id = nanoid();
1919
parsedTable.name = table.name;
2020
parsedTable.comment = table.note ?? "";
21-
parsedTable.color = "#175e7a";
21+
parsedTable.color = table.headerColor ?? "#175e7a";
2222
parsedTable.fields = [];
2323
parsedTable.indices = [];
2424

0 commit comments

Comments
 (0)