Recognize many to one relationships on sql import

This commit is contained in:
1ilit 2024-08-06 14:33:35 +03:00
parent d0b5f4c6c5
commit 07d7766fa8
7 changed files with 73 additions and 14 deletions

8
package-lock.json generated
View File

@ -28,7 +28,7 @@
"jsonschema": "^1.4.1", "jsonschema": "^1.4.1",
"jspdf": "^2.5.1", "jspdf": "^2.5.1",
"lexical": "^0.12.5", "lexical": "^0.12.5",
"node-sql-parser": "^5.0.0", "node-sql-parser": "^5.3.0",
"react": "^18.2.0", "react": "^18.2.0",
"react-dom": "^18.2.0", "react-dom": "^18.2.0",
"react-hotkeys-hook": "^4.4.1", "react-hotkeys-hook": "^4.4.1",
@ -4421,9 +4421,9 @@
"dev": true "dev": true
}, },
"node_modules/node-sql-parser": { "node_modules/node-sql-parser": {
"version": "5.0.0", "version": "5.3.0",
"resolved": "https://registry.npmjs.org/node-sql-parser/-/node-sql-parser-5.0.0.tgz", "resolved": "https://registry.npmjs.org/node-sql-parser/-/node-sql-parser-5.3.0.tgz",
"integrity": "sha512-hkNU1gIT8BNe8vmcsU7uYie0gzow/6AIj5KnGRBJQSZlgEu1NNuLVS11it5gAEdpmvJHelc34BwR439Iela+zQ==", "integrity": "sha512-KjomhTRfjmzvUNZ40BBF96ZII8ME68AyQXALeTQ3zEEfqup1zhhM91XDpuG+GEEO5urmWgxMJMJ9u3xmL+MzMw==",
"dependencies": { "dependencies": {
"@types/pegjs": "^0.10.0", "@types/pegjs": "^0.10.0",
"big-integer": "^1.6.48" "big-integer": "^1.6.48"

View File

@ -30,7 +30,7 @@
"jsonschema": "^1.4.1", "jsonschema": "^1.4.1",
"jspdf": "^2.5.1", "jspdf": "^2.5.1",
"lexical": "^0.12.5", "lexical": "^0.12.5",
"node-sql-parser": "^5.0.0", "node-sql-parser": "^5.3.0",
"react": "^18.2.0", "react": "^18.2.0",
"react-dom": "^18.2.0", "react-dom": "^18.2.0",
"react-hotkeys-hook": "^4.4.1", "react-hotkeys-hook": "^4.4.1",

View File

@ -149,7 +149,13 @@ export function fromMariaDB(ast, diagramDb = DB.GENERIC) {
relationship.updateConstraint = updateConstraint; relationship.updateConstraint = updateConstraint;
relationship.deleteConstraint = deleteConstraint; relationship.deleteConstraint = deleteConstraint;
relationship.cardinality = Cardinality.ONE_TO_ONE;
if (table.fields[startFieldId].unique) {
relationship.cardinality = Cardinality.ONE_TO_ONE;
} else {
relationship.cardinality = Cardinality.MANY_TO_ONE;
}
relationships.push(relationship); relationships.push(relationship);
} }
} }
@ -231,7 +237,13 @@ export function fromMariaDB(ast, diagramDb = DB.GENERIC) {
relationship.endFieldId = endFieldId; relationship.endFieldId = endFieldId;
relationship.updateConstraint = updateConstraint; relationship.updateConstraint = updateConstraint;
relationship.deleteConstraint = deleteConstraint; relationship.deleteConstraint = deleteConstraint;
relationship.cardinality = Cardinality.ONE_TO_ONE;
if (tables[startTableId].fields[startFieldId].unique) {
relationship.cardinality = Cardinality.ONE_TO_ONE;
} else {
relationship.cardinality = Cardinality.MANY_TO_ONE;
}
relationships.push(relationship); relationships.push(relationship);
relationships.forEach((r, i) => (r.id = i)); relationships.forEach((r, i) => (r.id = i));

View File

@ -161,7 +161,13 @@ export function fromMSSQL(ast, diagramDb = DB.GENERIC) {
relationship.updateConstraint = updateConstraint; relationship.updateConstraint = updateConstraint;
relationship.deleteConstraint = deleteConstraint; relationship.deleteConstraint = deleteConstraint;
relationship.cardinality = Cardinality.ONE_TO_ONE;
if (table.fields[startFieldId].unique) {
relationship.cardinality = Cardinality.ONE_TO_ONE;
} else {
relationship.cardinality = Cardinality.MANY_TO_ONE;
}
relationships.push(relationship); relationships.push(relationship);
} }
} }
@ -243,7 +249,13 @@ export function fromMSSQL(ast, diagramDb = DB.GENERIC) {
relationship.endFieldId = endFieldId; relationship.endFieldId = endFieldId;
relationship.updateConstraint = updateConstraint; relationship.updateConstraint = updateConstraint;
relationship.deleteConstraint = deleteConstraint; relationship.deleteConstraint = deleteConstraint;
relationship.cardinality = Cardinality.ONE_TO_ONE;
if (tables[startTableId].fields[startFieldId].unique) {
relationship.cardinality = Cardinality.ONE_TO_ONE;
} else {
relationship.cardinality = Cardinality.MANY_TO_ONE;
}
relationships.push(relationship); relationships.push(relationship);
relationships.forEach((r, i) => (r.id = i)); relationships.forEach((r, i) => (r.id = i));

View File

@ -149,7 +149,13 @@ export function fromMySQL(ast, diagramDb = DB.GENERIC) {
relationship.updateConstraint = updateConstraint; relationship.updateConstraint = updateConstraint;
relationship.deleteConstraint = deleteConstraint; relationship.deleteConstraint = deleteConstraint;
relationship.cardinality = Cardinality.ONE_TO_ONE;
if (table.fields[startFieldId].unique) {
relationship.cardinality = Cardinality.ONE_TO_ONE;
} else {
relationship.cardinality = Cardinality.MANY_TO_ONE;
}
relationships.push(relationship); relationships.push(relationship);
} }
} }
@ -231,7 +237,13 @@ export function fromMySQL(ast, diagramDb = DB.GENERIC) {
relationship.endFieldId = endFieldId; relationship.endFieldId = endFieldId;
relationship.updateConstraint = updateConstraint; relationship.updateConstraint = updateConstraint;
relationship.deleteConstraint = deleteConstraint; relationship.deleteConstraint = deleteConstraint;
relationship.cardinality = Cardinality.ONE_TO_ONE;
if (tables[startTableId].fields[startFieldId].unique) {
relationship.cardinality = Cardinality.ONE_TO_ONE;
} else {
relationship.cardinality = Cardinality.MANY_TO_ONE;
}
relationships.push(relationship); relationships.push(relationship);
relationships.forEach((r, i) => (r.id = i)); relationships.forEach((r, i) => (r.id = i));

View File

@ -150,7 +150,11 @@ export function fromPostgres(ast, diagramDb = DB.GENERIC) {
relationship.updateConstraint = updateConstraint; relationship.updateConstraint = updateConstraint;
relationship.deleteConstraint = deleteConstraint; relationship.deleteConstraint = deleteConstraint;
relationship.cardinality = Cardinality.ONE_TO_ONE; if (table.fields[startFieldId].unique) {
relationship.cardinality = Cardinality.ONE_TO_ONE;
} else {
relationship.cardinality = Cardinality.MANY_TO_ONE;
}
relationships.push(relationship); relationships.push(relationship);
} }
} }
@ -200,7 +204,13 @@ export function fromPostgres(ast, diagramDb = DB.GENERIC) {
relationship.endFieldId = endFieldId; relationship.endFieldId = endFieldId;
relationship.updateConstraint = updateConstraint; relationship.updateConstraint = updateConstraint;
relationship.deleteConstraint = deleteConstraint; relationship.deleteConstraint = deleteConstraint;
relationship.cardinality = Cardinality.ONE_TO_ONE;
if (table.fields[startFieldId].unique) {
relationship.cardinality = Cardinality.ONE_TO_ONE;
} else {
relationship.cardinality = Cardinality.MANY_TO_ONE;
}
relationships.push(relationship); relationships.push(relationship);
relationships.forEach((r, i) => (r.id = i)); relationships.forEach((r, i) => (r.id = i));
@ -292,6 +302,13 @@ export function fromPostgres(ast, diagramDb = DB.GENERIC) {
relationship.updateConstraint = updateConstraint; relationship.updateConstraint = updateConstraint;
relationship.deleteConstraint = deleteConstraint; relationship.deleteConstraint = deleteConstraint;
relationship.cardinality = Cardinality.ONE_TO_ONE; relationship.cardinality = Cardinality.ONE_TO_ONE;
if (tables[startTableId].fields[startFieldId].unique) {
relationship.cardinality = Cardinality.ONE_TO_ONE;
} else {
relationship.cardinality = Cardinality.MANY_TO_ONE;
}
relationships.push(relationship); relationships.push(relationship);
relationships.forEach((r, i) => (r.id = i)); relationships.forEach((r, i) => (r.id = i));

View File

@ -166,7 +166,13 @@ export function fromSQLite(ast, diagramDb = DB.GENERIC) {
relationship.updateConstraint = updateConstraint; relationship.updateConstraint = updateConstraint;
relationship.deleteConstraint = deleteConstraint; relationship.deleteConstraint = deleteConstraint;
relationship.cardinality = Cardinality.ONE_TO_ONE;
if (table.fields[startFieldId].unique) {
relationship.cardinality = Cardinality.ONE_TO_ONE;
} else {
relationship.cardinality = Cardinality.MANY_TO_ONE;
}
relationships.push(relationship); relationships.push(relationship);
} }
} }