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 (
|
CREATE TABLE Persons (
|
||||||
PersonID int NOT NULL AUTO_INCREMENT,
|
PersonID int NOT NULL AUTO_INCREMENT,
|
||||||
CreatedAt datetime,
|
CreatedAt datetime,
|
||||||
Age float,
|
Age float DEFAULT 20 NOT NULL,
|
||||||
LastName varchar(255),
|
LastName varchar(255),
|
||||||
FirstName varchar(255),
|
FirstName varchar(255),
|
||||||
Address varchar(255),
|
Address varchar(255),
|
||||||
|
|
|
@ -8,6 +8,7 @@ CREATE TABLE Persons (
|
||||||
FirstName varchar(255),
|
FirstName varchar(255),
|
||||||
Address varchar(255),
|
Address varchar(255),
|
||||||
City varchar(255) DEFAULT 'Belfast',
|
City varchar(255) DEFAULT 'Belfast',
|
||||||
|
Age INTEGER DEFAULT 20 NOT NULL,
|
||||||
Type person_job
|
Type person_job
|
||||||
);
|
);
|
||||||
CREATE TABLE Tasks (
|
CREATE TABLE Tasks (
|
||||||
|
|
|
@ -243,11 +243,13 @@ class SqlServerIntegration extends Sql implements DatasourcePlus {
|
||||||
if (typeof name !== "string") {
|
if (typeof name !== "string") {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
const isAuto = !!autoColumns.find(col => col === name)
|
||||||
|
const required = !!requiredColumns.find(col => col === name)
|
||||||
schema[name] = {
|
schema[name] = {
|
||||||
autocolumn: !!autoColumns.find(col => col === name),
|
autocolumn: isAuto,
|
||||||
name: name,
|
name: name,
|
||||||
constraints: {
|
constraints: {
|
||||||
presence: requiredColumns.find(col => col === name),
|
presence: required && !isAuto,
|
||||||
},
|
},
|
||||||
...convertSqlType(def.DATA_TYPE),
|
...convertSqlType(def.DATA_TYPE),
|
||||||
externalType: 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) {
|
if (column.Key === "PRI" && primaryKeys.indexOf(column.Key) === -1) {
|
||||||
primaryKeys.push(columnName)
|
primaryKeys.push(columnName)
|
||||||
}
|
}
|
||||||
const constraints = {
|
const hasDefault = column.Default != null
|
||||||
presence: column.Null !== "YES",
|
|
||||||
}
|
|
||||||
const isAuto: boolean =
|
const isAuto: boolean =
|
||||||
typeof column.Extra === "string" &&
|
typeof column.Extra === "string" &&
|
||||||
(column.Extra === "auto_increment" ||
|
(column.Extra === "auto_increment" ||
|
||||||
column.Extra.toLowerCase().includes("generated"))
|
column.Extra.toLowerCase().includes("generated"))
|
||||||
|
const required = column.Null !== "YES"
|
||||||
|
const constraints = {
|
||||||
|
presence: required && !isAuto && !hasDefault,
|
||||||
|
}
|
||||||
schema[columnName] = {
|
schema[columnName] = {
|
||||||
name: columnName,
|
name: columnName,
|
||||||
autocolumn: isAuto,
|
autocolumn: isAuto,
|
||||||
|
|
|
@ -262,15 +262,17 @@ class PostgresIntegration extends Sql implements DatasourcePlus {
|
||||||
column.identity_start ||
|
column.identity_start ||
|
||||||
column.identity_increment
|
column.identity_increment
|
||||||
)
|
)
|
||||||
const constraints = {
|
const hasDefault = column.column_default != null
|
||||||
presence: column.is_nullable === "NO",
|
const hasNextVal =
|
||||||
}
|
|
||||||
const hasDefault =
|
|
||||||
typeof column.column_default === "string" &&
|
typeof column.column_default === "string" &&
|
||||||
column.column_default.startsWith("nextval")
|
column.column_default.startsWith("nextval")
|
||||||
const isGenerated =
|
const isGenerated =
|
||||||
column.is_generated && column.is_generated !== "NEVER"
|
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] = {
|
tables[tableName].schema[columnName] = {
|
||||||
autocolumn: isAuto,
|
autocolumn: isAuto,
|
||||||
name: columnName,
|
name: columnName,
|
||||||
|
|
Loading…
Reference in New Issue