Fix bugs, improve schema gen
This commit is contained in:
Vendored
+6
-11
@@ -1,18 +1,12 @@
|
||||
import buildForeignKeyConstraint, { resolveForeignKeyName, } from "./build-foreign-key-constraint";
|
||||
import buildForeignKeyConstraint, { normalizeForeignKeyRule, resolveForeignKeyName, resolveForeignKeyRules, } from "./build-foreign-key-constraint";
|
||||
import MariaDBQuoteGen from "./mariadb-quote-gen";
|
||||
import runSchemaQuery, { querySchemaRows } from "./run-schema-query";
|
||||
function normalizeRule(rule) {
|
||||
return String(rule || "RESTRICT").toUpperCase().replace(/_/g, " ");
|
||||
}
|
||||
function ruleIsCascade(rule) {
|
||||
return normalizeRule(rule) === "CASCADE";
|
||||
}
|
||||
function fkIdentityKey(fk) {
|
||||
return `${fk.column}\0${fk.refTable}\0${fk.refColumn}`;
|
||||
}
|
||||
function rulesMatch(live, desired) {
|
||||
return (ruleIsCascade(live.deleteRule) === desired.cascadeDelete &&
|
||||
ruleIsCascade(live.updateRule) === desired.cascadeUpdate);
|
||||
return (normalizeForeignKeyRule(live.deleteRule) === desired.onDelete &&
|
||||
normalizeForeignKeyRule(live.updateRule) === desired.onUpdate);
|
||||
}
|
||||
export function grabDesiredForeignKeys(table) {
|
||||
const desired = [];
|
||||
@@ -23,13 +17,14 @@ export function grabDesiredForeignKeys(table) {
|
||||
!fk.destinationTableColumnName) {
|
||||
continue;
|
||||
}
|
||||
const { onDelete, onUpdate } = resolveForeignKeyRules(field, table.tableName);
|
||||
desired.push({
|
||||
name: resolveForeignKeyName(field, table.tableName),
|
||||
column: field.fieldName,
|
||||
refTable: fk.destinationTableName,
|
||||
refColumn: fk.destinationTableColumnName,
|
||||
cascadeDelete: Boolean(fk.cascadeDelete),
|
||||
cascadeUpdate: Boolean(fk.cascadeUpdate),
|
||||
onDelete,
|
||||
onUpdate,
|
||||
field,
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user