Fixing some issues with MySQL and dropping foreign key constrained columns.
This commit is contained in:
parent
5d40882c66
commit
953c90c8d4
|
@ -98,6 +98,7 @@ function generateManyLinkSchema(datasource, column, table, relatedTable) {
|
|||
_id: buildExternalTableId(datasource._id, jcTblName),
|
||||
name: jcTblName,
|
||||
primary: [primary, relatedPrimary],
|
||||
constrained: [primary, relatedPrimary],
|
||||
schema: {
|
||||
[primary]: foreignKeyStructure(primary, {
|
||||
toTable: table.name,
|
||||
|
@ -210,6 +211,12 @@ exports.save = async function (ctx) {
|
|||
relationType
|
||||
)
|
||||
fkTable.schema[foreignKey] = foreignKeyStructure(foreignKey)
|
||||
if (fkTable.constrained == null) {
|
||||
fkTable.constrained = []
|
||||
}
|
||||
if (fkTable.constrained.indexOf(foreignKey) === -1) {
|
||||
fkTable.constrained.push(foreignKey)
|
||||
}
|
||||
// foreign key is in other table, need to save it to external
|
||||
if (fkTable._id !== table._id) {
|
||||
extraTablesToUpdate.push(fkTable)
|
||||
|
@ -234,6 +241,13 @@ exports.save = async function (ctx) {
|
|||
await makeTableRequest(datasource, op, extraTable, tables, oldExtraTable)
|
||||
}
|
||||
|
||||
// make sure the constrained list, all still exist
|
||||
if (Array.isArray(tableToSave.constrained)) {
|
||||
tableToSave.constrained = tableToSave.constrained.filter(constraint =>
|
||||
Object.keys(tableToSave.schema).includes(constraint)
|
||||
)
|
||||
}
|
||||
|
||||
// store it into couch now for budibase reference
|
||||
datasource.entities[tableToSave.name] = tableToSave
|
||||
await db.put(datasource)
|
||||
|
|
|
@ -46,6 +46,7 @@ export interface Table extends Base {
|
|||
schema: TableSchema
|
||||
primaryDisplay?: string
|
||||
sourceId?: string
|
||||
constrained?: string[]
|
||||
}
|
||||
|
||||
export interface Row extends Base {
|
||||
|
|
|
@ -19,6 +19,7 @@ function generateSchema(schema: CreateTableBuilder, table: Table, tables: Record
|
|||
schema.primary(metaCols.map(col => col.name))
|
||||
}
|
||||
|
||||
|
||||
// check if any columns need added
|
||||
const foreignKeys = Object.values(table.schema).map(col => col.foreignKey)
|
||||
for (let [key, column] of Object.entries(table.schema)) {
|
||||
|
@ -78,6 +79,9 @@ function generateSchema(schema: CreateTableBuilder, table: Table, tables: Record
|
|||
.filter(([key, schema]) => schema.type !== FieldTypes.LINK && table.schema[key] == null)
|
||||
.map(([key]) => key)
|
||||
deletedColumns.forEach(key => {
|
||||
if (oldTable.constrained && oldTable.constrained.indexOf(key) !== -1) {
|
||||
schema.dropForeign(key)
|
||||
}
|
||||
schema.dropColumn(key)
|
||||
})
|
||||
}
|
||||
|
|
|
@ -265,7 +265,7 @@ module MySQLModule {
|
|||
if (Array.isArray(input)) {
|
||||
const responses = []
|
||||
for (let query of input) {
|
||||
responses.push(await internalQuery(this.client, query))
|
||||
responses.push(await internalQuery(this.client, query, false))
|
||||
}
|
||||
return responses
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue