Skip to content

Commit 2f1cca1

Browse files
committed
Support unsigned types (#177)
1 parent 1df8e4d commit 2f1cca1

File tree

6 files changed

+48
-2
lines changed

6 files changed

+48
-2
lines changed

src/components/EditorSidePanel/TablesTab/FieldDetails.jsx

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -299,6 +299,44 @@ export default function FieldDetails({ data, tid, index }) {
299299
/>
300300
</div>
301301
)}
302+
{databases[database].hasUnsignedTypes &&
303+
dbToTypes[database][data.type].signed && (
304+
<div className="flex justify-between items-center my-3">
305+
<div className="font-medium">{t("Unsigned")}</div>
306+
<Checkbox
307+
value="unsigned"
308+
checked={data.unsigned}
309+
onChange={(checkedValues) => {
310+
setUndoStack((prev) => [
311+
...prev,
312+
{
313+
action: Action.EDIT,
314+
element: ObjectType.TABLE,
315+
component: "field",
316+
tid: tid,
317+
fid: index,
318+
undo: {
319+
[checkedValues.target.value]:
320+
!checkedValues.target.checked,
321+
},
322+
redo: {
323+
[checkedValues.target.value]:
324+
checkedValues.target.checked,
325+
},
326+
message: t("edit_table", {
327+
tableName: tables[tid].name,
328+
extra: "[field]",
329+
}),
330+
},
331+
]);
332+
setRedoStack([]);
333+
updateField(tid, index, {
334+
unsigned: checkedValues.target.checked,
335+
});
336+
}}
337+
/>
338+
</div>
339+
)}
302340
<div className="font-semibold">{t("comment")}</div>
303341
<TextArea
304342
className="my-2"

src/data/databases.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ export const databases = new Proxy(
1313
label: DB.MYSQL,
1414
image: mysqlImage,
1515
hasTypes: false,
16+
hasUnsignedTypes: true,
1617
},
1718
[DB.POSTGRES]: {
1819
name: "PostgreSQL",
@@ -33,6 +34,7 @@ export const databases = new Proxy(
3334
label: DB.MARIADB,
3435
image: mariadbImage,
3536
hasTypes: false,
37+
hasUnsignedTypes: true,
3638
},
3739
[DB.MSSQL]: {
3840
name: "MSSQL",

src/data/datatypes.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,7 @@ const mysqlTypesBase = {
279279
isSized: false,
280280
hasPrecision: false,
281281
canIncrement: true,
282+
signed: true,
282283
},
283284
SMALLINT: {
284285
type: "SMALLINT",
@@ -289,6 +290,7 @@ const mysqlTypesBase = {
289290
isSized: false,
290291
hasPrecision: false,
291292
canIncrement: true,
293+
signed: true,
292294
},
293295
MEDIUMINT: {
294296
type: "MEDIUMINT",
@@ -299,6 +301,7 @@ const mysqlTypesBase = {
299301
isSized: false,
300302
hasPrecision: false,
301303
canIncrement: true,
304+
signed: true,
302305
},
303306
INTEGER: {
304307
type: "INTEGER",
@@ -309,6 +312,7 @@ const mysqlTypesBase = {
309312
isSized: false,
310313
hasPrecision: false,
311314
canIncrement: true,
315+
signed: true,
312316
},
313317
BIGINT: {
314318
type: "BIGINT",
@@ -319,6 +323,7 @@ const mysqlTypesBase = {
319323
isSized: false,
320324
hasPrecision: false,
321325
canIncrement: true,
326+
signed: true,
322327
},
323328
DECIMAL: {
324329
type: "DECIMAL",

src/i18n/locales/en.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,7 @@ const en = {
235235
declare_array: "Declare array",
236236
empty_index_name: "Declared an index with no name in table '{{tableName}}'",
237237
didnt_find_diagram: "Oops! Didn't find the diagram.",
238+
unsigned: "Unsigned",
238239
},
239240
};
240241

src/utils/exportSQL/mariadb.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ export function toMariaDB(diagram) {
1313
(field) =>
1414
`${exportFieldComment(field.comment)}\t\`${
1515
field.name
16-
}\` ${field.type}${field.notNull ? " NOT NULL" : ""}${
16+
}\` ${field.type}${field.unsigned ? " UNSIGNED" : ""}${field.notNull ? " NOT NULL" : ""}${
1717
field.increment ? " AUTO_INCREMENT" : ""
1818
}${field.unique ? " UNIQUE" : ""}${
1919
field.default !== ""

src/utils/exportSQL/mysql.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ export function toMySQL(diagram) {
1313
(field) =>
1414
`${exportFieldComment(field.comment)}\t\`${
1515
field.name
16-
}\` ${field.type}${field.size !== undefined && field.size !== "" ? "(" + field.size + ")" : ""}${
16+
}\` ${field.type}${field.unsigned ? " UNSIGNED" : ""}${field.size !== undefined && field.size !== "" ? "(" + field.size + ")" : ""}${
1717
field.notNull ? " NOT NULL" : ""
1818
}${
1919
field.increment ? " AUTO_INCREMENT" : ""

0 commit comments

Comments
 (0)