From 6172d48bf5988325f3e3cdc075f995dfb77b2207 Mon Sep 17 00:00:00 2001 From: 1ilit Date: Tue, 19 Sep 2023 15:51:36 +0300 Subject: [PATCH] Parse types for postgres --- src/components/control_panel.jsx | 4 +++- src/utils/index.js | 14 +++++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/components/control_panel.jsx b/src/components/control_panel.jsx index 64bc49f..d1a507b 100644 --- a/src/components/control_panel.jsx +++ b/src/components/control_panel.jsx @@ -775,7 +775,7 @@ export default function ControlPanel(props) { relationships: relationships, notes: notes, subjectAreas: areas, - types: types + types: types, }, null, 2 @@ -797,6 +797,7 @@ export default function ControlPanel(props) { const src = jsonToMySQL({ tables: tables, references: relationships, + types: types, }); setExportData((prev) => ({ ...prev, @@ -811,6 +812,7 @@ export default function ControlPanel(props) { const src = jsonToPostgreSQL({ tables: tables, references: relationships, + types: types, }); setExportData((prev) => ({ ...prev, diff --git a/src/utils/index.js b/src/utils/index.js index 6706ee7..e9119cf 100644 --- a/src/utils/index.js +++ b/src/utils/index.js @@ -177,7 +177,19 @@ function jsonToMySQL(obj) { } function jsonToPostgreSQL(obj) { - return `${obj.tables + return `${obj.types.map( + (type) => + `${type.fields + .filter((f) => f.type === "ENUM" || f.type === "SET") + .map( + (f) => + `CREATE TYPE "${f.name}_t" AS ENUM (${f.values + .map((v) => `'${v}'`) + .join(", ")});\n` + )}CREATE TYPE ${type.name} AS (\n${type.fields + .map((f) => `\t${f.name} ${getTypeString(f, "postgres")}`) + .join("\n")}\n);` + )}\n${obj.tables .map( (table) => `${table.comment === "" ? "" : `/**\n${table.comment}\n*/\n`}${