Fixing some issues highlighted by test case.

This commit is contained in:
mike12345567 2024-06-07 17:59:18 +01:00
parent 14266be4e4
commit 3cc4b71561
2 changed files with 19 additions and 8 deletions

View File

@ -258,11 +258,12 @@ describe("/datasources", () => {
}) })
) )
const stringName = "string"
const fullSchema: { const fullSchema: {
[type in SupportedSqlTypes]: FieldSchema & { type: type } [type in SupportedSqlTypes]: FieldSchema & { type: type }
} = { } = {
[FieldType.STRING]: { [FieldType.STRING]: {
name: "string", name: stringName,
type: FieldType.STRING, type: FieldType.STRING,
constraints: { constraints: {
presence: true, presence: true,
@ -353,6 +354,10 @@ describe("/datasources", () => {
), ),
schema: Object.entries(table.schema).reduce<TableSchema>( schema: Object.entries(table.schema).reduce<TableSchema>(
(acc, [fieldName, field]) => { (acc, [fieldName, field]) => {
// the constraint will be unset - as the DB doesn't recognise it as not null
if (fieldName === stringName) {
field.constraints = {}
}
acc[fieldName] = expect.objectContaining({ acc[fieldName] = expect.objectContaining({
...field, ...field,
}) })

View File

@ -289,19 +289,25 @@ function copyExistingPropsOver(
externalType: externalType:
existingTableSchema[key].externalType || existingTableSchema[key].externalType ||
table.schema[key]?.externalType, table.schema[key]?.externalType,
autocolumn: !!fetchedColumnDefinition?.autocolumn, autocolumn: fetchedColumnDefinition?.autocolumn,
} as FieldSchema } as FieldSchema
// check constraints which can be fetched from the DB (they could be updated) // check constraints which can be fetched from the DB (they could be updated)
if (fetchedColumnDefinition?.constraints) { if (fetchedColumnDefinition?.constraints) {
// inclusions are the enum values (select/options) // inclusions are the enum values (select/options)
const fetchedInclusion = fetchedColumnDefinition.constraints.inclusion const fetchedConstraints = fetchedColumnDefinition.constraints
const oldInclusion = table.schema[key].constraints?.inclusion const oldConstraints = table.schema[key].constraints
table.schema[key].constraints = { table.schema[key].constraints = {
...table.schema[key].constraints, ...table.schema[key].constraints,
presence: !!fetchedColumnDefinition.constraints?.presence, inclusion: fetchedConstraints.inclusion?.length
inclusion: fetchedInclusion?.length ? fetchedConstraints.inclusion
? fetchedInclusion : oldConstraints?.inclusion,
: oldInclusion, }
// true or undefined - consistent with old API
if (fetchedConstraints.presence) {
table.schema[key].constraints!.presence =
fetchedConstraints.presence
} else if (oldConstraints?.presence === true) {
delete table.schema[key].constraints?.presence
} }
} }
} }