Merge pull request #11948 from Budibase/BUDI-7500/validation-not-triggering-for-required-foreign-keys
Validation not triggering for required foreign keys
This commit is contained in:
commit
ab8cb75336
|
@ -277,10 +277,7 @@
|
|||
dispatch("updatecolumns")
|
||||
gridDispatch("close-edit-column")
|
||||
|
||||
if (
|
||||
saveColumn.type === LINK_TYPE &&
|
||||
saveColumn.relationshipType === RelationshipType.MANY_TO_MANY
|
||||
) {
|
||||
if (saveColumn.type === LINK_TYPE) {
|
||||
// Fetching the new tables
|
||||
tables.fetch()
|
||||
// Fetching the new relationships
|
||||
|
@ -312,6 +309,11 @@
|
|||
confirmDeleteDialog.hide()
|
||||
dispatch("updatecolumns")
|
||||
gridDispatch("close-edit-column")
|
||||
|
||||
if (editableColumn.type === LINK_TYPE) {
|
||||
// Updating the relationships
|
||||
datasources.fetch()
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
notifications.error(`Error deleting column: ${error.message}`)
|
||||
|
|
|
@ -57,7 +57,8 @@
|
|||
label: table.name,
|
||||
value: table._id,
|
||||
}))
|
||||
$: valid = getErrorCount(errors) === 0 && allRequiredAttributesSet()
|
||||
$: valid =
|
||||
getErrorCount(errors) === 0 && allRequiredAttributesSet(relationshipType)
|
||||
$: isManyToMany = relationshipType === RelationshipType.MANY_TO_MANY
|
||||
$: isManyToOne = relationshipType === RelationshipType.MANY_TO_ONE
|
||||
|
||||
|
@ -114,7 +115,7 @@
|
|||
return Object.entries(errors).filter(entry => !!entry[1]).length
|
||||
}
|
||||
|
||||
function allRequiredAttributesSet() {
|
||||
function allRequiredAttributesSet(relationshipType) {
|
||||
const base = getTable(fromId) && getTable(toId) && fromColumn && toColumn
|
||||
if (relationshipType === RelationshipType.MANY_TO_ONE) {
|
||||
return base && fromPrimary && fromForeign
|
||||
|
@ -124,9 +125,10 @@
|
|||
}
|
||||
|
||||
function validate() {
|
||||
if (!allRequiredAttributesSet() && !hasValidated) {
|
||||
if (!allRequiredAttributesSet(relationshipType) && !hasValidated) {
|
||||
return
|
||||
}
|
||||
|
||||
hasValidated = true
|
||||
errorChecker.setType(relationshipType)
|
||||
const fromTable = getTable(fromId),
|
||||
|
|
|
@ -21,15 +21,22 @@
|
|||
function getRelationships(tables) {
|
||||
const relatedColumns = {}
|
||||
|
||||
tables.forEach(({ name: tableName, schema }) => {
|
||||
tables.forEach(({ name: tableName, schema, _id: tableId }) => {
|
||||
Object.values(schema).forEach(column => {
|
||||
if (column.type !== "link") return
|
||||
|
||||
relatedColumns[column._id] ??= {}
|
||||
relatedColumns[column._id].through =
|
||||
relatedColumns[column._id].through || column.through
|
||||
const columnId =
|
||||
column.through ||
|
||||
column._id ||
|
||||
(column.main
|
||||
? `${tableId}_${column.fieldName}__${column.tableId}_${column.foreignKey}`
|
||||
: `${column.tableId}_${column.foreignKey}__${tableId}_${column.fieldName}`)
|
||||
|
||||
relatedColumns[column._id][column.main ? "from" : "to"] = {
|
||||
relatedColumns[columnId] ??= {}
|
||||
relatedColumns[columnId].through =
|
||||
relatedColumns[columnId].through || column.through
|
||||
|
||||
relatedColumns[columnId][column.main ? "from" : "to"] = {
|
||||
...column,
|
||||
tableName,
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue