knex-schema-inspector
Advanced tools
Comparing version 1.5.12 to 1.5.13
@@ -57,3 +57,19 @@ "use strict"; | ||
return __assign(__assign({}, rawColumn), { default_value: parseDefaultValue(rawColumn.default_value) || | ||
parseDefaultValue(rawColumn.generation_expression), is_generated: !!rawColumn.is_generated, is_unique: rawColumn.is_unique === true, is_primary_key: rawColumn.is_primary_key === true, is_nullable: rawColumn.is_nullable === 'YES', has_auto_increment: rawColumn.has_auto_increment === 'YES', numeric_precision: rawColumn.numeric_precision || null, numeric_scale: rawColumn.numeric_scale || null }); | ||
parseDefaultValue(rawColumn.generation_expression), is_generated: !!rawColumn.is_generated, is_unique: rawColumn.is_unique === true, is_primary_key: rawColumn.is_primary_key === true, is_nullable: rawColumn.is_nullable === 'YES', has_auto_increment: rawColumn.has_auto_increment === 'YES', numeric_precision: rawColumn.numeric_precision || null, numeric_scale: rawColumn.numeric_scale || null, max_length: parseMaxLength(rawColumn) }); | ||
function parseMaxLength(rawColumn) { | ||
if (Number.isNaN(Number(rawColumn.max_length)) || | ||
rawColumn.max_length === null || | ||
rawColumn.max_length === undefined) { | ||
return null; | ||
} | ||
// n-* columns save every character as 2 bytes, which causes the max_length column to return the | ||
// max length in bytes instead of characters. For example: | ||
// varchar(100) => max_length == 100 | ||
// nvarchar(100) => max_length == 200 | ||
// In order to get the actual max_length value, we'll divide the value by 2 | ||
if (['nvarchar', 'nchar', 'ntext'].includes(rawColumn.data_type)) { | ||
return Number(rawColumn.max_length) / 2; | ||
} | ||
return Number(rawColumn.max_length); | ||
} | ||
} | ||
@@ -60,0 +76,0 @@ exports.rawColumnToColumn = rawColumnToColumn; |
@@ -45,3 +45,25 @@ import { Knex } from 'knex'; | ||
numeric_scale: rawColumn.numeric_scale || null, | ||
max_length: parseMaxLength(rawColumn), | ||
}; | ||
function parseMaxLength(rawColumn: RawColumn) { | ||
if ( | ||
Number.isNaN(Number(rawColumn.max_length)) || | ||
rawColumn.max_length === null || | ||
rawColumn.max_length === undefined | ||
) { | ||
return null; | ||
} | ||
// n-* columns save every character as 2 bytes, which causes the max_length column to return the | ||
// max length in bytes instead of characters. For example: | ||
// varchar(100) => max_length == 100 | ||
// nvarchar(100) => max_length == 200 | ||
// In order to get the actual max_length value, we'll divide the value by 2 | ||
if (['nvarchar', 'nchar', 'ntext'].includes(rawColumn.data_type)) { | ||
return Number(rawColumn.max_length) / 2; | ||
} | ||
return Number(rawColumn.max_length); | ||
} | ||
} | ||
@@ -48,0 +70,0 @@ |
{ | ||
"name": "knex-schema-inspector", | ||
"version": "1.5.12", | ||
"version": "1.5.13", | ||
"description": "Utility for extracting information about existing DB schema", | ||
@@ -5,0 +5,0 @@ "main": "dist/index.js", |
@@ -148,3 +148,3 @@ import knex, { Knex } from 'knex'; | ||
table: 'teams', | ||
data_type: 'varchar', | ||
data_type: 'nvarchar', | ||
default_value: null, | ||
@@ -393,3 +393,3 @@ max_length: 100, | ||
table: 'teams', | ||
data_type: 'varchar', | ||
data_type: 'nvarchar', | ||
default_value: null, | ||
@@ -396,0 +396,0 @@ max_length: 100, |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
295905
6442