Use COMMENT keyword when exporting comments

This commit is contained in:
1ilit 2024-08-23 18:16:42 +04:00
parent 1139ad45f4
commit ff57dbc16d
4 changed files with 33 additions and 31 deletions

View File

@ -141,12 +141,10 @@ export function jsonToMySQL(obj) {
return `${obj.tables return `${obj.tables
.map( .map(
(table) => (table) =>
`${ `CREATE TABLE \`${table.name}\` (\n${table.fields
table.comment === "" ? "" : `/* ${table.comment} */\n`
}CREATE TABLE \`${table.name}\` (\n${table.fields
.map( .map(
(field) => (field) =>
`${field.comment === "" ? "" : `\t-- ${field.comment}\n`}\t\`${ `\t\`${
field.name field.name
}\` ${getTypeString(field, obj.database)}${field.notNull ? " NOT NULL" : ""}${ }\` ${getTypeString(field, obj.database)}${field.notNull ? " NOT NULL" : ""}${
field.increment ? " AUTO_INCREMENT" : "" field.increment ? " AUTO_INCREMENT" : ""
@ -220,16 +218,16 @@ export function jsonToPostgreSQL(obj) {
.join("\n")}\n);` .join("\n")}\n);`
); );
} else { } else {
return `${ return `CREATE TYPE ${type.name} AS (\n${type.fields
type.comment === "" ? "" : `/**\n${type.comment}\n*/\n`
}CREATE TYPE ${type.name} AS (\n${type.fields
.map((f) => `\t${f.name} ${getTypeString(f, obj.database, "postgres")}`) .map((f) => `\t${f.name} ${getTypeString(f, obj.database, "postgres")}`)
.join("\n")}\n);`; .join(
"\n",
)}\n);\n${type.comment != "" ? `\nCOMMENT ON TYPE ${type.name} IS '${type.comment}';\n` : ""}`;
} }
})}\n${obj.tables })}\n${obj.tables
.map( .map(
(table) => (table) =>
`${table.comment === "" ? "" : `/**\n${table.comment}\n*/\n`}${ `${
table.fields.filter((f) => f.type === "ENUM" || f.type === "SET") table.fields.filter((f) => f.type === "ENUM" || f.type === "SET")
.length > 0 .length > 0
? `${table.fields ? `${table.fields
@ -265,7 +263,13 @@ export function jsonToPostgreSQL(obj) {
.map((f) => `"${f.name}"`) .map((f) => `"${f.name}"`)
.join(", ")})` .join(", ")})`
: "" : ""
}\n);\n${table.indices }\n);\n${table.comment != "" ? `\nCOMMENT ON TABLE ${table.name} IS '${table.comment}';\n` : ""}${table.fields
.map((field) =>
field.comment.trim() !== ""
? `COMMENT ON COLUMN ${table.name}.${field.name} IS '${field.comment}';\n`
: "",
)
.join("")}\n${table.indices
.map( .map(
(i) => (i) =>
`CREATE ${i.unique ? "UNIQUE " : ""}INDEX "${ `CREATE ${i.unique ? "UNIQUE " : ""}INDEX "${
@ -381,12 +385,10 @@ export function jsonToMariaDB(obj) {
return `${obj.tables return `${obj.tables
.map( .map(
(table) => (table) =>
`${ `CREATE OR REPLACE TABLE \`${table.name}\` (\n${table.fields
table.comment === "" ? "" : `/* ${table.comment} */\n`
}CREATE OR REPLACE TABLE \`${table.name}\` (\n${table.fields
.map( .map(
(field) => (field) =>
`${field.comment === "" ? "" : `\t-- ${field.comment}\n`}\t\`${ `\t\`${
field.name field.name
}\` ${getTypeString(field, obj.database)}${field.notNull ? " NOT NULL" : ""}${ }\` ${getTypeString(field, obj.database)}${field.notNull ? " NOT NULL" : ""}${
field.increment ? " AUTO_INCREMENT" : "" field.increment ? " AUTO_INCREMENT" : ""
@ -405,7 +407,7 @@ export function jsonToMariaDB(obj) {
)}', \`${field.name}\`))` )}', \`${field.name}\`))`
: "" : ""
: ` CHECK(${field.check})` : ` CHECK(${field.check})`
}`, }${field.comment ? ` COMMENT '${field.comment}'` : ""}`,
) )
.join(",\n")}${ .join(",\n")}${
table.fields.filter((f) => f.primary).length > 0 table.fields.filter((f) => f.primary).length > 0
@ -414,7 +416,7 @@ export function jsonToMariaDB(obj) {
.map((f) => `\`${f.name}\``) .map((f) => `\`${f.name}\``)
.join(", ")})` .join(", ")})`
: "" : ""
}\n);${`\n${table.indices }\n)${table.comment ? ` COMMENT='${table.comment}'` : ""};${`\n${table.indices
.map( .map(
(i) => (i) =>
`CREATE ${i.unique ? "UNIQUE " : ""}INDEX \`${ `CREATE ${i.unique ? "UNIQUE " : ""}INDEX \`${

View File

@ -6,9 +6,7 @@ export function toMariaDB(diagram) {
return `${diagram.tables return `${diagram.tables
.map( .map(
(table) => (table) =>
`${ `CREATE OR REPLACE TABLE \`${table.name}\` (\n${table.fields
table.comment === "" ? "" : `/* ${table.comment} */\n`
}CREATE OR REPLACE TABLE \`${table.name}\` (\n${table.fields
.map( .map(
(field) => (field) =>
`${exportFieldComment(field.comment)}\t\`${ `${exportFieldComment(field.comment)}\t\`${
@ -24,7 +22,7 @@ export function toMariaDB(diagram) {
!dbToTypes[diagram.database][field.type].hasCheck !dbToTypes[diagram.database][field.type].hasCheck
? "" ? ""
: ` CHECK(${field.check})` : ` CHECK(${field.check})`
}`, }${field.comment ? ` COMMENT '${field.comment}'` : ""}`,
) )
.join(",\n")}${ .join(",\n")}${
table.fields.filter((f) => f.primary).length > 0 table.fields.filter((f) => f.primary).length > 0
@ -33,7 +31,7 @@ export function toMariaDB(diagram) {
.map((f) => `\`${f.name}\``) .map((f) => `\`${f.name}\``)
.join(", ")})` .join(", ")})`
: "" : ""
}\n);${`\n${table.indices }\n)${table.comment ? ` COMMENT='${table.comment}'` : ""};${`\n${table.indices
.map( .map(
(i) => (i) =>
`\nCREATE ${i.unique ? "UNIQUE " : ""}INDEX \`${ `\nCREATE ${i.unique ? "UNIQUE " : ""}INDEX \`${

View File

@ -1,4 +1,4 @@
import { exportFieldComment, parseDefault } from "./shared"; import { parseDefault } from "./shared";
import { dbToTypes } from "../../data/datatypes"; import { dbToTypes } from "../../data/datatypes";
@ -6,14 +6,10 @@ export function toMySQL(diagram) {
return `${diagram.tables return `${diagram.tables
.map( .map(
(table) => (table) =>
`${ `CREATE TABLE \`${table.name}\` (\n${table.fields
table.comment === "" ? "" : `/* ${table.comment} */\n`
}CREATE TABLE \`${table.name}\` (\n${table.fields
.map( .map(
(field) => (field) =>
`${exportFieldComment(field.comment)}\t\`${ `\` ${field.type}${field.unsigned ? " UNSIGNED" : ""}${field.size !== undefined && field.size !== "" ? "(" + field.size + ")" : ""}${
field.name
}\` ${field.type}${field.unsigned ? " UNSIGNED" : ""}${field.size !== undefined && field.size !== "" ? "(" + field.size + ")" : ""}${
field.notNull ? " NOT NULL" : "" field.notNull ? " NOT NULL" : ""
}${ }${
field.increment ? " AUTO_INCREMENT" : "" field.increment ? " AUTO_INCREMENT" : ""

View File

@ -6,9 +6,9 @@ export function toPostgres(diagram) {
const enumStatements = diagram.enums const enumStatements = diagram.enums
.map( .map(
(e) => (e) =>
`CREATE TYPE "${e.name}" AS ENUM (\n${e.values.map((v) => `\t'${v}'`).join(",\n")}\n);`, `CREATE TYPE "${e.name}" AS ENUM (\n${e.values.map((v) => `\t'${v}'`).join(",\n")}\n);\n`,
) )
.join("\n\n"); .join("\n");
const typeStatements = diagram.types const typeStatements = diagram.types
.map( .map(
@ -53,7 +53,13 @@ export function toPostgres(diagram) {
table.comment.trim() !== "" table.comment.trim() !== ""
? `\nCOMMENT ON TABLE "${table.name}" IS '${table.comment}';\n` ? `\nCOMMENT ON TABLE "${table.name}" IS '${table.comment}';\n`
: "" : ""
}${table.indices }${table.fields
.map((field) =>
field.comment.trim() !== ""
? `COMMENT ON COLUMN ${table.name}.${field.name} IS '${field.comment}';\n`
: "",
)
.join("")}${table.indices
.map( .map(
(i) => (i) =>
`\nCREATE ${i.unique ? "UNIQUE " : ""}INDEX "${ `\nCREATE ${i.unique ? "UNIQUE " : ""}INDEX "${