Convert unsupported types in generic diagrams on import

This commit is contained in:
1ilit 2024-06-16 01:38:22 +03:00
parent 0a108fc33a
commit 490cb738de
2 changed files with 51 additions and 26 deletions

View File

@ -2,10 +2,22 @@ import { Cardinality, DB } from "../../data/constants";
import { dbToTypes } from "../../data/datatypes";
import { buildSQLFromAST } from "./shared";
export const affinity = new Proxy(
const affinity = {
[DB.MYSQL]: new Proxy(
{ INT: "INTEGER" },
{ get: (target, prop) => (prop in target ? target[prop] : "BLOB") },
);
),
[DB.GENERIC]: new Proxy(
{
INT: "INTEGER",
TINYINT: "SMALLINT",
MEDIUMINT: "INTEGER",
BIT: "BOOLEAN",
YEAR: "INTEGER",
},
{ get: (target, prop) => (prop in target ? target[prop] : "BLOB") },
),
};
export function fromMySQL(ast, diagramDb = DB.GENERIC) {
const tables = [];
@ -28,7 +40,7 @@ export function fromMySQL(ast, diagramDb = DB.GENERIC) {
let type = d.definition.dataType;
if (!dbToTypes[diagramDb][type]) {
type = affinity[type];
type = affinity[diagramDb][type];
}
field.type = type;

View File

@ -2,7 +2,8 @@ import { Cardinality, DB } from "../../data/constants";
import { dbToTypes } from "../../data/datatypes";
import { buildSQLFromAST } from "./shared";
export const affinity = new Proxy(
const affinity = {
[DB.SQLITE]: new Proxy(
{
INT: "INTEGER",
TINYINT: "INTEGER",
@ -18,10 +19,22 @@ export const affinity = new Proxy(
DOUBLE: "REAL",
FLOAT: "REAL",
},
{ get: (target, prop) => (prop in target ? target[prop] : "BLOB") },
),
[DB.GENERIC]: new Proxy(
{
get: (target, prop) => (prop in target ? target[prop] : "BLOB"),
INT: "INTEGER",
TINYINT: "SMALLINT",
MEDIUMINT: "INTEGER",
INT2: "INTEGER",
INT8: "INTEGER",
CHARACTER: "TEXT",
NCHARACTER: "TEXT",
NVARCHAR: "VARCHAR",
},
);
{ get: (target, prop) => (prop in target ? target[prop] : "BLOB") },
),
};
export function fromSQLite(ast, diagramDb = DB.GENERIC) {
console.log(ast);
@ -45,7 +58,7 @@ export function fromSQLite(ast, diagramDb = DB.GENERIC) {
let type = d.definition.dataType;
if (!dbToTypes[diagramDb][type]) {
type = affinity[type];
type = affinity[diagramDb][type];
}
field.type = type;