knex-schema-inspector
Advanced tools
Comparing version 1.6.2 to 1.6.3
@@ -224,13 +224,3 @@ "use strict"; | ||
.select('c.TABLE_NAME', 'c.COLUMN_NAME', 'c.COLUMN_DEFAULT', 'c.COLUMN_TYPE', 'c.CHARACTER_MAXIMUM_LENGTH', 'c.IS_NULLABLE', 'c.COLUMN_KEY', 'c.EXTRA', 'c.COLLATION_NAME', 'c.COLUMN_COMMENT', 'c.NUMERIC_PRECISION', 'c.NUMERIC_SCALE', 'c.GENERATION_EXPRESSION', 'fk.REFERENCED_TABLE_NAME', 'fk.REFERENCED_COLUMN_NAME', 'fk.CONSTRAINT_NAME', 'rc.UPDATE_RULE', 'rc.DELETE_RULE', 'rc.MATCH_OPTION') | ||
.from('INFORMATION_SCHEMA.COLUMNS as c') | ||
.leftJoin('INFORMATION_SCHEMA.KEY_COLUMN_USAGE as fk', function () { | ||
this.on('c.TABLE_NAME', '=', 'fk.TABLE_NAME') | ||
.andOn('fk.COLUMN_NAME', '=', 'c.COLUMN_NAME') | ||
.andOn('fk.CONSTRAINT_SCHEMA', '=', 'c.TABLE_SCHEMA'); | ||
}) | ||
.leftJoin('INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS as rc', function () { | ||
this.on('rc.TABLE_NAME', '=', 'fk.TABLE_NAME') | ||
.andOn('rc.CONSTRAINT_NAME', '=', 'fk.CONSTRAINT_NAME') | ||
.andOn('rc.CONSTRAINT_SCHEMA', '=', 'fk.CONSTRAINT_SCHEMA'); | ||
}) | ||
.from(this.knex.raw("\n INFORMATION_SCHEMA.COLUMNS AS c\n LEFT JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS fk\n ON c.TABLE_NAME = fk.TABLE_NAME\n AND c.COLUMN_NAME = fk.COLUMN_NAME\n AND c.TABLE_SCHEMA = fk.CONSTRAINT_SCHEMA\n AND fk.CONSTRAINT_NAME = (\n SELECT _fk.CONSTRAINT_NAME\n FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS _fk\n WHERE fk.TABLE_NAME = _fk.TABLE_NAME\n AND fk.COLUMN_NAME = _fk.COLUMN_NAME\n AND fk.CONSTRAINT_SCHEMA = _fk.CONSTRAINT_SCHEMA\n ORDER BY REFERENCED_TABLE_NAME IS NULL\n LIMIT 1\n )\n LEFT JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS as rc\n ON rc.TABLE_NAME = fk.TABLE_NAME\n AND rc.CONSTRAINT_NAME = fk.CONSTRAINT_NAME\n AND rc.CONSTRAINT_SCHEMA = fk.CONSTRAINT_SCHEMA\n ")) | ||
.where({ | ||
@@ -237,0 +227,0 @@ 'c.TABLE_SCHEMA': this.knex.client.database(), |
@@ -220,15 +220,23 @@ import { Knex } from 'knex'; | ||
) | ||
.from('INFORMATION_SCHEMA.COLUMNS as c') | ||
.leftJoin('INFORMATION_SCHEMA.KEY_COLUMN_USAGE as fk', function () { | ||
this.on('c.TABLE_NAME', '=', 'fk.TABLE_NAME') | ||
.andOn('fk.COLUMN_NAME', '=', 'c.COLUMN_NAME') | ||
.andOn('fk.CONSTRAINT_SCHEMA', '=', 'c.TABLE_SCHEMA'); | ||
}) | ||
.leftJoin( | ||
'INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS as rc', | ||
function () { | ||
this.on('rc.TABLE_NAME', '=', 'fk.TABLE_NAME') | ||
.andOn('rc.CONSTRAINT_NAME', '=', 'fk.CONSTRAINT_NAME') | ||
.andOn('rc.CONSTRAINT_SCHEMA', '=', 'fk.CONSTRAINT_SCHEMA'); | ||
} | ||
.from( | ||
this.knex.raw(` | ||
INFORMATION_SCHEMA.COLUMNS AS c | ||
LEFT JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS fk | ||
ON c.TABLE_NAME = fk.TABLE_NAME | ||
AND c.COLUMN_NAME = fk.COLUMN_NAME | ||
AND c.TABLE_SCHEMA = fk.CONSTRAINT_SCHEMA | ||
AND fk.CONSTRAINT_NAME = ( | ||
SELECT _fk.CONSTRAINT_NAME | ||
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS _fk | ||
WHERE fk.TABLE_NAME = _fk.TABLE_NAME | ||
AND fk.COLUMN_NAME = _fk.COLUMN_NAME | ||
AND fk.CONSTRAINT_SCHEMA = _fk.CONSTRAINT_SCHEMA | ||
ORDER BY REFERENCED_TABLE_NAME IS NULL | ||
LIMIT 1 | ||
) | ||
LEFT JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS as rc | ||
ON rc.TABLE_NAME = fk.TABLE_NAME | ||
AND rc.CONSTRAINT_NAME = fk.CONSTRAINT_NAME | ||
AND rc.CONSTRAINT_SCHEMA = fk.CONSTRAINT_SCHEMA | ||
`) | ||
) | ||
@@ -235,0 +243,0 @@ .where({ |
{ | ||
"name": "knex-schema-inspector", | ||
"version": "1.6.2", | ||
"version": "1.6.3", | ||
"description": "Utility for extracting information about existing DB schema", | ||
@@ -5,0 +5,0 @@ "main": "dist/index.js", |
@@ -122,3 +122,5 @@ import knex, { Knex } from 'knex'; | ||
it('returns information for all columns in all tables', async () => { | ||
expect(await inspector.columnInfo()).to.deep.include.members([ | ||
const columnInfo = await inspector.columnInfo(); | ||
expect(columnInfo).to.have.length(16); | ||
expect(columnInfo).to.deep.include.members([ | ||
{ | ||
@@ -135,3 +137,3 @@ name: 'team_id', | ||
is_nullable: false, | ||
is_unique: false, | ||
is_unique: true, | ||
is_primary_key: false, | ||
@@ -138,0 +140,0 @@ has_auto_increment: false, |
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
307516
6737