knex-schema-inspector
Advanced tools
Comparing version 1.6.3 to 1.6.4
@@ -224,3 +224,13 @@ "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(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 ")) | ||
.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'); | ||
}) | ||
.where({ | ||
@@ -242,3 +252,11 @@ 'c.TABLE_SCHEMA': this.knex.client.database(), | ||
records = _a.sent(); | ||
return [2 /*return*/, records.map(rawColumnToColumn)]; | ||
return [2 /*return*/, records | ||
.map(rawColumnToColumn) | ||
.sort(function (column) { return +!column.foreign_key_column; }) | ||
.filter(function (column, index, records) { | ||
var first = records.findIndex(function (_column) { | ||
return column.name === _column.name && column.table === _column.table; | ||
}); | ||
return first === index; | ||
})]; | ||
} | ||
@@ -245,0 +263,0 @@ }); |
@@ -220,23 +220,15 @@ import { Knex } from 'knex'; | ||
) | ||
.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 | ||
`) | ||
.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'); | ||
} | ||
) | ||
@@ -261,3 +253,11 @@ .where({ | ||
return records.map(rawColumnToColumn); | ||
return records | ||
.map(rawColumnToColumn) | ||
.sort((column) => +!column.foreign_key_column) | ||
.filter((column, index, records) => { | ||
const first = records.findIndex((_column) => { | ||
return column.name === _column.name && column.table === _column.table; | ||
}); | ||
return first === index; | ||
}); | ||
} | ||
@@ -264,0 +264,0 @@ |
{ | ||
"name": "knex-schema-inspector", | ||
"version": "1.6.3", | ||
"version": "1.6.4", | ||
"description": "Utility for extracting information about existing DB schema", | ||
@@ -5,0 +5,0 @@ "main": "dist/index.js", |
307959
6753