mirror of
https://github.com/typeorm/typeorm.git
synced 2025-12-08 21:26:23 +00:00
fixed bug with default values comparision
This commit is contained in:
parent
97ee9af475
commit
3ccf4d6123
@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "typeorm",
|
||||
"private": true,
|
||||
"version": "0.0.7-alpha.12",
|
||||
"version": "0.0.7-alpha.13",
|
||||
"description": "Data-Mapper ORM for TypeScript, ES7, ES6, ES5. Supports MySQL, PostgreSQL, MariaDB, SQLite, MS SQL Server, Oracle, WebSQL databases.",
|
||||
"license": "MIT",
|
||||
"readmeFilename": "README.md",
|
||||
|
||||
@ -736,6 +736,21 @@ export class MysqlQueryRunner implements QueryRunner {
|
||||
throw new DataTypeNotSupportedByDriverError(typeOptions.type, "MySQL/MariaDB");
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if "DEFAULT" values in the column metadata and in the database schema are equal.
|
||||
*/
|
||||
compareDefaultValues(columnMetadataValue: any, databaseValue: any): boolean {
|
||||
|
||||
if (typeof columnMetadataValue === "number")
|
||||
return columnMetadataValue === parseInt(databaseValue);
|
||||
if (typeof columnMetadataValue === "boolean")
|
||||
return columnMetadataValue === (!!databaseValue || databaseValue === "false");
|
||||
if (typeof columnMetadataValue === "function")
|
||||
return columnMetadataValue() === databaseValue;
|
||||
|
||||
return columnMetadataValue === databaseValue;
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// Protected Methods
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
@ -807,6 +807,21 @@ AND cons.constraint_name = cols.constraint_name AND cons.owner = cols.owner ORDE
|
||||
throw new DataTypeNotSupportedByDriverError(typeOptions.type, "Oracle");
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if "DEFAULT" values in the column metadata and in the database schema are equal.
|
||||
*/
|
||||
compareDefaultValues(columnMetadataValue: any, databaseValue: any): boolean {
|
||||
|
||||
if (typeof columnMetadataValue === "number")
|
||||
return columnMetadataValue === parseInt(databaseValue);
|
||||
if (typeof columnMetadataValue === "boolean")
|
||||
return columnMetadataValue === (!!databaseValue || databaseValue === "false");
|
||||
if (typeof columnMetadataValue === "function")
|
||||
return columnMetadataValue() === databaseValue;
|
||||
|
||||
return columnMetadataValue === databaseValue;
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// Protected Methods
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
@ -802,6 +802,21 @@ where constraint_type = 'PRIMARY KEY' and tc.table_catalog = '${this.dbName}'`;
|
||||
throw new DataTypeNotSupportedByDriverError(typeOptions.type, "Postgres");
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if "DEFAULT" values in the column metadata and in the database schema are equal.
|
||||
*/
|
||||
compareDefaultValues(columnMetadataValue: any, databaseValue: any): boolean {
|
||||
|
||||
if (typeof columnMetadataValue === "number")
|
||||
return columnMetadataValue === parseInt(databaseValue);
|
||||
if (typeof columnMetadataValue === "boolean")
|
||||
return columnMetadataValue === (!!databaseValue || databaseValue === "false");
|
||||
if (typeof columnMetadataValue === "function")
|
||||
return columnMetadataValue() === databaseValue;
|
||||
|
||||
return columnMetadataValue === databaseValue;
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// Protected Methods
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
@ -785,6 +785,21 @@ export class SqliteQueryRunner implements QueryRunner {
|
||||
throw new DataTypeNotSupportedByDriverError(typeOptions.type, "SQLite");
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if "DEFAULT" values in the column metadata and in the database schema are equal.
|
||||
*/
|
||||
compareDefaultValues(columnMetadataValue: any, databaseValue: any): boolean {
|
||||
|
||||
if (typeof columnMetadataValue === "number")
|
||||
return columnMetadataValue === parseInt(databaseValue);
|
||||
if (typeof columnMetadataValue === "boolean")
|
||||
return columnMetadataValue === (!!databaseValue || databaseValue === "false");
|
||||
if (typeof columnMetadataValue === "function")
|
||||
return columnMetadataValue() === databaseValue;
|
||||
|
||||
return columnMetadataValue === databaseValue;
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// Protected Methods
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
@ -839,6 +839,21 @@ WHERE columnUsages.TABLE_CATALOG = '${this.dbName}' AND tableConstraints.TABLE_C
|
||||
throw new DataTypeNotSupportedByDriverError(typeOptions.type, "SQLServer");
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if "DEFAULT" values in the column metadata and in the database schema are equal.
|
||||
*/
|
||||
compareDefaultValues(columnMetadataValue: any, databaseValue: any): boolean {
|
||||
|
||||
if (typeof columnMetadataValue === "number")
|
||||
return columnMetadataValue === parseInt(databaseValue);
|
||||
if (typeof columnMetadataValue === "boolean")
|
||||
return columnMetadataValue === (!!databaseValue || databaseValue === "false");
|
||||
if (typeof columnMetadataValue === "function")
|
||||
return columnMetadataValue() === databaseValue;
|
||||
|
||||
return columnMetadataValue === databaseValue;
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// Protected Methods
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
@ -794,6 +794,21 @@ export class WebsqlQueryRunner implements QueryRunner {
|
||||
throw new DataTypeNotSupportedByDriverError(typeOptions.type, "WebSQL");
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if "DEFAULT" values in the column metadata and in the database schema are equal.
|
||||
*/
|
||||
compareDefaultValues(columnMetadataValue: any, databaseValue: any): boolean {
|
||||
|
||||
if (typeof columnMetadataValue === "number")
|
||||
return columnMetadataValue === parseInt(databaseValue);
|
||||
if (typeof columnMetadataValue === "boolean")
|
||||
return columnMetadataValue === (!!databaseValue || databaseValue === "false");
|
||||
if (typeof columnMetadataValue === "function")
|
||||
return columnMetadataValue() === databaseValue;
|
||||
|
||||
return columnMetadataValue === databaseValue;
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// Protected Methods
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
@ -79,6 +79,11 @@ export interface QueryRunner {
|
||||
*/
|
||||
normalizeType(typeOptions: { type: ColumnType, length?: string|number, precision?: number, scale?: number, timezone?: boolean }): any;
|
||||
|
||||
/**
|
||||
* Checks if "DEFAULT" values in the column metadata and in the database schema are equal.
|
||||
*/
|
||||
compareDefaultValues(columnMetadataValue: any, databaseValue: any): boolean;
|
||||
|
||||
/**
|
||||
* Loads all tables (with given names) from the database and creates a TableSchema from them.
|
||||
*/
|
||||
|
||||
@ -204,7 +204,7 @@ export class TableSchema {
|
||||
return columnSchema.name !== columnMetadata.name ||
|
||||
columnSchema.type !== queryRunner.normalizeType(columnMetadata) ||
|
||||
columnSchema.comment !== columnMetadata.comment ||
|
||||
(!columnSchema.isGenerated && columnSchema.default !== columnMetadata.default) || // we included check for generated here, because generated columns already can have default values
|
||||
(!columnSchema.isGenerated && !queryRunner.compareDefaultValues(columnMetadata.default, columnSchema.default)) || // we included check for generated here, because generated columns already can have default values
|
||||
columnSchema.isNullable !== columnMetadata.isNullable ||
|
||||
columnSchema.isUnique !== columnMetadata.isUnique ||
|
||||
// columnSchema.isPrimary !== columnMetadata.isPrimary ||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user