MCPcopy
hub / github.com/drawdb-io/drawdb / jsonToPostgreSQL

Function jsonToPostgreSQL

src/utils/exportSQL/generic.js:258–367  ·  view source on GitHub ↗
(obj)

Source from the content-addressed store, hash-verified

256}
257
258export function jsonToPostgreSQL(obj) {
259 return `${obj.types.map((type) => {
260 const typeStatements = type.fields
261 .filter((f) => f.type === "ENUM" || f.type === "SET")
262 .map(
263 (f) =>
264 `CREATE TYPE "${f.name}_t" AS ENUM (${f.values
265 .map((v) => `'${v}'`)
266 .join(", ")});`,
267 )
268 .join("\n");
269 if (typeStatements.length > 0) {
270 return (
271 typeStatements.join("") +
272 `${
273 type.comment === "" ? "" : `/**\n${type.comment}\n*/\n`
274 }CREATE TYPE ${type.name} AS (\n${type.fields
275 .map(
276 (f) => `\t${f.name} ${getTypeString(f, obj.database, DB.POSTGRES)}`,
277 )
278 .join("\n")}\n);`
279 );
280 } else {
281 return `CREATE TYPE ${type.name} AS (\n${type.fields
282 .map(
283 (f) => `\t${f.name} ${getTypeString(f, obj.database, DB.POSTGRES)}`,
284 )
285 .join(",\n")}\n);\n${
286 type.comment && type.comment.trim() != ""
287 ? `\nCOMMENT ON TYPE ${type.name} IS '${escapeQuotes(type.comment)}';\n`
288 : ""
289 }`;
290 }
291 })}\n${obj.tables
292 .map(
293 (table) =>
294 `${
295 table.fields.filter((f) => f.type === "ENUM" || f.type === "SET")
296 .length > 0
297 ? `${table.fields
298 .filter((f) => f.type === "ENUM" || f.type === "SET")
299 .map(
300 (f) =>
301 `CREATE TYPE "${f.name}_t" AS ENUM (${f.values
302 .map((v) => `'${v}'`)
303 .join(", ")});\n`,
304 )
305 .join("\n")}\n`
306 : ""
307 }CREATE TABLE IF NOT EXISTS "${table.name}" (\n${table.fields
308 .map(
309 (field) =>
310 `${field.comment === "" ? "" : `\t-- ${field.comment}\n`}\t"${
311 field.name
312 }" ${getTypeString(field, obj.database, DB.POSTGRES)}${
313 field.notNull ? " NOT NULL" : ""
314 }${field.unique ? " UNIQUE" : ""}${
315 field.default !== "" ? ` DEFAULT ${parseDefault(field)}` : ""

Callers 1

ControlPanelFunction · 0.90

Calls 5

escapeQuotesFunction · 0.90
parseDefaultFunction · 0.90
uniqueConstraintClauseFunction · 0.90
getFkColumnNamesFunction · 0.90
getTypeStringFunction · 0.85

Tested by

no test coverage detected