Ensure required fields are included
This commit is contained in:
parent
f8ece82648
commit
e6a27ad4d5
|
@ -15,6 +15,7 @@ import { breakExternalTableId } from "../../../../integrations/utils"
|
||||||
import { generateJunctionTableID } from "../../../../db/utils"
|
import { generateJunctionTableID } from "../../../../db/utils"
|
||||||
import sdk from "../../../../sdk"
|
import sdk from "../../../../sdk"
|
||||||
import { helpers } from "@budibase/shared-core"
|
import { helpers } from "@budibase/shared-core"
|
||||||
|
import { sql } from "@budibase/backend-core"
|
||||||
|
|
||||||
type TableMap = Record<string, Table>
|
type TableMap = Record<string, Table>
|
||||||
|
|
||||||
|
@ -132,6 +133,27 @@ export async function buildSqlFieldList(
|
||||||
.map(([columnName]) => `${table.name}.${columnName}`)
|
.map(([columnName]) => `${table.name}.${columnName}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getRequiredFields(table: Table, existing: string[] = []) {
|
||||||
|
const requiredFields: string[] = []
|
||||||
|
if (table.primary) {
|
||||||
|
requiredFields.push(...table.primary)
|
||||||
|
}
|
||||||
|
if (table.primaryDisplay) {
|
||||||
|
requiredFields.push(table.primaryDisplay)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!sql.utils.isExternalTable(table)) {
|
||||||
|
requiredFields.push(...["_id", "_rev", "_tableId"])
|
||||||
|
}
|
||||||
|
|
||||||
|
return requiredFields
|
||||||
|
.filter(
|
||||||
|
column =>
|
||||||
|
!existing.find((field: string) => field === `${table.name}.${column}`)
|
||||||
|
)
|
||||||
|
.map(column => `${table.name}.${column}`)
|
||||||
|
}
|
||||||
|
|
||||||
let fields: string[] = []
|
let fields: string[] = []
|
||||||
|
|
||||||
const isView = sdk.views.isView(source)
|
const isView = sdk.views.isView(source)
|
||||||
|
@ -150,6 +172,16 @@ export async function buildSqlFieldList(
|
||||||
table = source
|
table = source
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fields.push(
|
||||||
|
...getRequiredFields(
|
||||||
|
{
|
||||||
|
...table,
|
||||||
|
primaryDisplay: source.primaryDisplay || table.primaryDisplay,
|
||||||
|
},
|
||||||
|
fields
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
for (const field of Object.values(table.schema)) {
|
for (const field of Object.values(table.schema)) {
|
||||||
if (field.type !== FieldType.LINK || !relationships || !field.tableId) {
|
if (field.type !== FieldType.LINK || !relationships || !field.tableId) {
|
||||||
continue
|
continue
|
||||||
|
|
Loading…
Reference in New Issue