From b56024bc832b7d78399b65a0baea7692e00f0308 Mon Sep 17 00:00:00 2001 From: Rudy Nurhadi Date: Thu, 3 Oct 2024 11:11:12 +0700 Subject: [PATCH 1/4] Add timetz datatype for postgres --- src/data/datatypes.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/data/datatypes.js b/src/data/datatypes.js index cacb7ec..275a0c3 100644 --- a/src/data/datatypes.js +++ b/src/data/datatypes.js @@ -909,6 +909,20 @@ const postgresTypesBase = { hasPrecision: false, hasQuotes: true, }, + TIMETZ: { + type: "TIMETZ", + checkDefault: (field) => { + const specialValues = ["now", "allballs"]; + return ( + /^(?:[01]?\d|2[0-3]):[0-5]?\d:[0-5]?\d([+-]\d{2}:\d{2})?$/.test(field.default) || + specialValues.includes(field.default.toLowerCase()) + ); + }, + hasCheck: false, + isSized: false, + hasPrecision: false, + hasQuotes: true, + }, TIMESTAMP: { type: "TIMESTAMP", checkDefault: (field) => { From c78245cb3ac45647d15b533a9f263a631b58fa27 Mon Sep 17 00:00:00 2001 From: Rudy Nurhadi Date: Tue, 8 Oct 2024 06:17:29 +0700 Subject: [PATCH 2/4] Fix postgres auto increment primary key Add "GENERATED BY DEFAULT AS IDENTITY" if field is auto increment --- src/utils/exportSQL/postgres.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/utils/exportSQL/postgres.js b/src/utils/exportSQL/postgres.js index 0db0e52..bccd4a8 100644 --- a/src/utils/exportSQL/postgres.js +++ b/src/utils/exportSQL/postgres.js @@ -32,6 +32,8 @@ export function toPostgres(diagram) { `${exportFieldComment(field.comment)}\t"${ field.name }" ${field.type}${field.isArray ? " ARRAY" : ""}${field.notNull ? " NOT NULL" : ""}${field.unique ? " UNIQUE" : ""}${ + field.increment ? " GENERATED BY DEFAULT AS IDENTITY" : "" + }${ field.default.trim() !== "" ? ` DEFAULT ${parseDefault(field, diagram.database)}` : "" From 5c2262e7594e40ac95744279e7f781bcb2faa997 Mon Sep 17 00:00:00 2001 From: Rudy Nurhadi Date: Fri, 11 Oct 2024 07:29:53 +0700 Subject: [PATCH 3/4] Remove TEXT size from postgres datatype --- src/data/datatypes.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/data/datatypes.js b/src/data/datatypes.js index 275a0c3..527ce74 100644 --- a/src/data/datatypes.js +++ b/src/data/datatypes.js @@ -857,9 +857,8 @@ const postgresTypesBase = { return field.default.length <= field.size; }, hasCheck: true, - isSized: true, + isSized: false, hasPrecision: false, - defaultSize: 65535, hasQuotes: true, }, BYTEA: { From 25542b58b3aed8588ccdd0277d7a8226451d84e2 Mon Sep 17 00:00:00 2001 From: Rudy Nurhadi Date: Fri, 11 Oct 2024 07:30:57 +0700 Subject: [PATCH 4/4] Add type size when exporting postgres --- src/utils/exportSQL/postgres.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/utils/exportSQL/postgres.js b/src/utils/exportSQL/postgres.js index bccd4a8..d6b8107 100644 --- a/src/utils/exportSQL/postgres.js +++ b/src/utils/exportSQL/postgres.js @@ -31,7 +31,9 @@ export function toPostgres(diagram) { (field) => `${exportFieldComment(field.comment)}\t"${ field.name - }" ${field.type}${field.isArray ? " ARRAY" : ""}${field.notNull ? " NOT NULL" : ""}${field.unique ? " UNIQUE" : ""}${ + }" ${field.type}${ + field.size !== undefined && field.size !== "" ? "(" + field.size + ")" : "" + }${field.isArray ? " ARRAY" : ""}${field.notNull ? " NOT NULL" : ""}${field.unique ? " UNIQUE" : ""}${ field.increment ? " GENERATED BY DEFAULT AS IDENTITY" : "" }${ field.default.trim() !== ""