Fix for default values with NOT NULL requirements being intepreted as requiring values in the frontend, presence check is now ignored if a default or auto value is found.
This commit is contained in:
parent
80a5768e06
commit
09ccac12ae
|
@ -3,7 +3,7 @@ USE main;
|
|||
CREATE TABLE Persons (
|
||||
PersonID int NOT NULL AUTO_INCREMENT,
|
||||
CreatedAt datetime,
|
||||
Age float,
|
||||
Age float DEFAULT 20 NOT NULL,
|
||||
LastName varchar(255),
|
||||
FirstName varchar(255),
|
||||
Address varchar(255),
|
||||
|
|
|
@ -8,6 +8,7 @@ CREATE TABLE Persons (
|
|||
FirstName varchar(255),
|
||||
Address varchar(255),
|
||||
City varchar(255) DEFAULT 'Belfast',
|
||||
Age INTEGER DEFAULT 20 NOT NULL,
|
||||
Type person_job
|
||||
);
|
||||
CREATE TABLE Tasks (
|
||||
|
|
|
@ -243,11 +243,13 @@ class SqlServerIntegration extends Sql implements DatasourcePlus {
|
|||
if (typeof name !== "string") {
|
||||
continue
|
||||
}
|
||||
const isAuto = !!autoColumns.find(col => col === name)
|
||||
const required = !!requiredColumns.find(col => col === name)
|
||||
schema[name] = {
|
||||
autocolumn: !!autoColumns.find(col => col === name),
|
||||
autocolumn: isAuto,
|
||||
name: name,
|
||||
constraints: {
|
||||
presence: requiredColumns.find(col => col === name),
|
||||
presence: required && !isAuto,
|
||||
},
|
||||
...convertSqlType(def.DATA_TYPE),
|
||||
externalType: def.DATA_TYPE,
|
||||
|
|
|
@ -229,13 +229,15 @@ class MySQLIntegration extends Sql implements DatasourcePlus {
|
|||
if (column.Key === "PRI" && primaryKeys.indexOf(column.Key) === -1) {
|
||||
primaryKeys.push(columnName)
|
||||
}
|
||||
const constraints = {
|
||||
presence: column.Null !== "YES",
|
||||
}
|
||||
const hasDefault = column.Default != null
|
||||
const isAuto: boolean =
|
||||
typeof column.Extra === "string" &&
|
||||
(column.Extra === "auto_increment" ||
|
||||
column.Extra.toLowerCase().includes("generated"))
|
||||
const required = column.Null !== "YES"
|
||||
const constraints = {
|
||||
presence: required && !isAuto && !hasDefault,
|
||||
}
|
||||
schema[columnName] = {
|
||||
name: columnName,
|
||||
autocolumn: isAuto,
|
||||
|
|
|
@ -262,15 +262,17 @@ class PostgresIntegration extends Sql implements DatasourcePlus {
|
|||
column.identity_start ||
|
||||
column.identity_increment
|
||||
)
|
||||
const constraints = {
|
||||
presence: column.is_nullable === "NO",
|
||||
}
|
||||
const hasDefault =
|
||||
const hasDefault = column.column_default != null
|
||||
const hasNextVal =
|
||||
typeof column.column_default === "string" &&
|
||||
column.column_default.startsWith("nextval")
|
||||
const isGenerated =
|
||||
column.is_generated && column.is_generated !== "NEVER"
|
||||
const isAuto: boolean = hasDefault || identity || isGenerated
|
||||
const isAuto: boolean = hasNextVal || identity || isGenerated
|
||||
const required = column.is_nullable === "NO"
|
||||
const constraints = {
|
||||
presence: required && !hasDefault && !isGenerated,
|
||||
}
|
||||
tables[tableName].schema[columnName] = {
|
||||
autocolumn: isAuto,
|
||||
name: columnName,
|
||||
|
|
Loading…
Reference in New Issue