New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@directus/schema

Package Overview
Dependencies
Maintainers
3
Versions
170
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@directus/schema - npm Package Compare versions

Comparing version 9.0.0-rc.45 to 9.0.0-rc.46

19

dist/dialects/mssql.js

@@ -79,8 +79,8 @@ "use strict";

return __awaiter(this, void 0, void 0, function () {
var columns, overview, _loop_1, _i, _b, column;
return __generator(this, function (_c) {
switch (_c.label) {
case 0: return [4 /*yield*/, this.knex.raw("\n\t\t\tSELECT\n\t\t\t\tc.TABLE_NAME as table_name,\n\t\t\t\tc.COLUMN_NAME as column_name,\n\t\t\t\tc.COLUMN_DEFAULT as default_value,\n\t\t\t\tc.IS_NULLABLE as is_nullable,\n\t\t\t\tc.DATA_TYPE as data_type,\n\t\t\t\tpk.PK_SET as column_key\n\t\t\tFROM\n\t\t\t\t[" + this.knex.client.database() + "].INFORMATION_SCHEMA.COLUMNS as c\n\t\t\tLEFT JOIN (\n\t\t\t\tSELECT\n\t\t\t\t\tPK_SET = CASE WHEN CONSTRAINT_NAME LIKE '%pk%' THEN 'PRIMARY' ELSE NULL END\n\t\t\t\tFROM [" + this.knex.client.database() + "].INFORMATION_SCHEMA.KEY_COLUMN_USAGE\n\t\t\t) as pk\n\t\t\tON [c].[TABLE_NAME] = [pk].[CONSTRAINT_TABLE_NAME]\n\t\t\tAND [c].[TABLE_CATALOG] = [pk].[CONSTRAINT_CATALOG]\n\t\t\tAND [c].[COLUMN_NAME] = [pk].[CONSTRAINT_COLUMN_NAME]\n\t\t\t")];
var columns, overview, _loop_1, this_1, _i, columns_1, column;
return __generator(this, function (_b) {
switch (_b.label) {
case 0: return [4 /*yield*/, this.knex.raw("\n\t\t\tSELECT\n\t\t\t\tc.TABLE_NAME as table_name,\n\t\t\t\tc.COLUMN_NAME as column_name,\n\t\t\t\tc.COLUMN_DEFAULT as default_value,\n\t\t\t\tc.IS_NULLABLE as is_nullable,\n\t\t\t\tc.DATA_TYPE as data_type,\n\t\t\t\tpk.PK_SET as column_key\n\t\t\tFROM\n\t\t\t\t[" + this.knex.client.database() + "].INFORMATION_SCHEMA.COLUMNS as c\n\t\t\tLEFT JOIN (\n\t\t\t\tSELECT\n\t\t\t\t\tPK_SET = CASE WHEN CONSTRAINT_NAME LIKE '%pk%' THEN 'PRIMARY' ELSE NULL END,\n\t\t\t\t\tTABLE_NAME,\n\t\t\t\t\tCONSTRAINT_CATALOG,\n\t\t\t\t\tCOLUMN_NAME\n\t\t\t\tFROM [" + this.knex.client.database() + "].INFORMATION_SCHEMA.KEY_COLUMN_USAGE\n\t\t\t) as pk\n\t\t\tON [c].[TABLE_NAME] = [pk].[TABLE_NAME]\n\t\t\tAND [c].[TABLE_CATALOG] = [pk].[CONSTRAINT_CATALOG]\n\t\t\tAND [c].[COLUMN_NAME] = [pk].[COLUMN_NAME]\n\t\t\t")];
case 1:
columns = _c.sent();
columns = _b.sent();
overview = {};

@@ -90,3 +90,3 @@ _loop_1 = function (column) {

overview[column.table_name] = {
primary: (_a = columns[0].find(function (nested) {
primary: (_a = columns.find(function (nested) {
return nested.table_name === column.table_name && nested.column_key === 'PRIMARY';

@@ -97,6 +97,7 @@ })) === null || _a === void 0 ? void 0 : _a.column_name,

}
overview[column.table_name].columns[column.column_name] = __assign(__assign({}, column), { is_nullable: column.is_nullable === 'YES' });
overview[column.table_name].columns[column.column_name] = __assign(__assign({}, column), { default_value: this_1.parseDefaultValue(column.default_value), is_nullable: column.is_nullable === 'YES' });
};
for (_i = 0, _b = columns[0]; _i < _b.length; _i++) {
column = _b[_i];
this_1 = this;
for (_i = 0, columns_1 = columns; _i < columns_1.length; _i++) {
column = columns_1[_i];
_loop_1(column);

@@ -103,0 +104,0 @@ }

@@ -80,3 +80,3 @@ "use strict";

switch (_c.label) {
case 0: return [4 /*yield*/, this.knex.raw("\n\t\t\tSELECT\n\t\t\t\tc.TABLE_NAME as table_name,\n\t\t\t\tc.COLUMN_NAME as column_name,\n\t\t\t\tc.DATA_DEFAULT as default_value,\n\t\t\t\tc.NULLABLE as is_nullable,\n\t\t\t\tc.DATA_TYPE as data_type,\n\t\t\t\tpk.CONSTRAINT_TYPE as column_key\n\t\t\tFROM DBA_TAB_COLUMNS as c\n\t\t\tLEFT JOIN all_constraints as pk\n\t\t\t\tON c.TABLE_NAME = pk.TABLE_NAME\n\t\t\t\tAND c.CONSTRAINT_NAME = pk.CONSTRAINT_NAME\n\t\t\t\tAND c.OWNER = pk.OWNER\n\t\t\t")];
case 0: return [4 /*yield*/, this.knex.raw("\n\t\t\tSELECT\n\t\t\t\t\"USER_TAB_COLUMNS\".\"TABLE_NAME\" AS table_name,\n\t\t\t\t\"USER_TAB_COLUMNS\".\"COLUMN_NAME\" AS column_name,\n\t\t\t\t\"USER_TAB_COLUMNS\".\"DATA_DEFAULT\" AS default_value,\n\t\t\t\t\"USER_TAB_COLUMNS\".\"NULLABLE\" AS is_nullable,\n\t\t\t\t\"USER_TAB_COLUMNS\".\"DATA_TYPE\" AS data_type,\n\t\t\t\t\"USER_TAB_COLUMNS\".\"DATA_PRECISION\" AS numeric_precision,\n\t\t\t\t\"USER_TAB_COLUMNS\".\"DATA_SCALE\" AS numeric_scale,\n\t\t\t\t\"USER_CONSTRAINTS\".\"CONSTRAINT_TYPE\" AS column_key\n\t\t\tFROM\n\t\t\t\t\"USER_TAB_COLUMNS\"\n\t\t\t\tLEFT JOIN \"USER_CONS_COLUMNS\" ON \"USER_TAB_COLUMNS\".\"TABLE_NAME\" = \"USER_CONS_COLUMNS\".\"TABLE_NAME\"\n\t\t\t\t\tAND \"USER_TAB_COLUMNS\".\"COLUMN_NAME\" = \"USER_CONS_COLUMNS\".\"COLUMN_NAME\"\n\t\t\t\tLEFT JOIN \"USER_CONSTRAINTS\" ON \"USER_CONS_COLUMNS\".\"CONSTRAINT_NAME\" = \"USER_CONSTRAINTS\".\"CONSTRAINT_NAME\";\n\t\t")];
case 1:

@@ -83,0 +83,0 @@ columns = _c.sent();

@@ -75,7 +75,7 @@ "use strict";

Postgres.prototype.overview = function () {
var _a;
var _a, _b;
return __awaiter(this, void 0, void 0, function () {
var _b, columnsResult, primaryKeysResult, columns, primaryKeys, overview, _loop_1, this_1, _i, columns_1, column;
return __generator(this, function (_c) {
switch (_c.label) {
var _c, columnsResult, primaryKeysResult, columns, primaryKeys, overview, _loop_1, this_1, _i, columns_1, column;
return __generator(this, function (_d) {
switch (_d.label) {
case 0: return [4 /*yield*/, Promise.all([

@@ -88,3 +88,3 @@ // Only select columns from BASE TABLEs to exclude views (Postgres views

case 1:
_b = _c.sent(), columnsResult = _b[0], primaryKeysResult = _b[1];
_c = _d.sent(), columnsResult = _c[0], primaryKeysResult = _c[1];
columns = columnsResult.rows;

@@ -99,3 +99,5 @@ primaryKeys = primaryKeysResult.rows;

};
overview[column.table_name].columns[column.column_name] = __assign(__assign({}, column), { default_value: this_1.parseDefaultValue(column.default_value), is_nullable: column.is_nullable === 'YES' });
overview[column.table_name].columns[column.column_name] = __assign(__assign({}, column), { default_value: ((_b = column.default_value) === null || _b === void 0 ? void 0 : _b.startsWith('nextval('))
? 'AUTO_INCREMENT'
: this_1.parseDefaultValue(column.default_value), is_nullable: column.is_nullable === 'YES' });
};

@@ -102,0 +104,0 @@ this_1 = this;

{
"name": "@directus/schema",
"version": "9.0.0-rc.45",
"version": "9.0.0-rc.46",
"description": "Utility for extracting information about existing DB schema",

@@ -48,5 +48,5 @@ "main": "dist/index.js",

"dependencies": {
"knex-schema-inspector": "^1.1.0"
"knex-schema-inspector": "^1.2.0"
},
"gitHead": "87ed604f1872ffb3c4b01a36a4a6554cd08fe385"
"gitHead": "33f36d2485e12973145d292cdcf343b909f8ed82"
}

@@ -22,15 +22,20 @@ import KnexMSSQL from 'knex-schema-inspector/dist/dialects/mssql';

SELECT
PK_SET = CASE WHEN CONSTRAINT_NAME LIKE '%pk%' THEN 'PRIMARY' ELSE NULL END
PK_SET = CASE WHEN CONSTRAINT_NAME LIKE '%pk%' THEN 'PRIMARY' ELSE NULL END,
TABLE_NAME,
CONSTRAINT_CATALOG,
COLUMN_NAME
FROM [${this.knex.client.database()}].INFORMATION_SCHEMA.KEY_COLUMN_USAGE
) as pk
ON [c].[TABLE_NAME] = [pk].[CONSTRAINT_TABLE_NAME]
ON [c].[TABLE_NAME] = [pk].[TABLE_NAME]
AND [c].[TABLE_CATALOG] = [pk].[CONSTRAINT_CATALOG]
AND [c].[COLUMN_NAME] = [pk].[CONSTRAINT_COLUMN_NAME]
AND [c].[COLUMN_NAME] = [pk].[COLUMN_NAME]
`
);
const overview: SchemaOverview = {};
for (const column of columns[0]) {
for (const column of columns) {
if (column.table_name in overview === false) {
overview[column.table_name] = {
primary: columns[0].find((nested: { column_key: string; table_name: string }) => {
primary: columns.find((nested: { column_key: string; table_name: string }) => {
return nested.table_name === column.table_name && nested.column_key === 'PRIMARY';

@@ -41,9 +46,12 @@ })?.column_name,

}
overview[column.table_name].columns[column.column_name] = {
...column,
default_value: this.parseDefaultValue(column.default_value),
is_nullable: column.is_nullable === 'YES',
};
}
return overview;
}
}

@@ -7,19 +7,21 @@ import KnexOracle from 'knex-schema-inspector/dist/dialects/oracledb';

async overview() {
const columns = await this.knex.raw(
`
const columns = await this.knex.raw(`
SELECT
c.TABLE_NAME as table_name,
c.COLUMN_NAME as column_name,
c.DATA_DEFAULT as default_value,
c.NULLABLE as is_nullable,
c.DATA_TYPE as data_type,
pk.CONSTRAINT_TYPE as column_key
FROM DBA_TAB_COLUMNS as c
LEFT JOIN all_constraints as pk
ON c.TABLE_NAME = pk.TABLE_NAME
AND c.CONSTRAINT_NAME = pk.CONSTRAINT_NAME
AND c.OWNER = pk.OWNER
`
);
"USER_TAB_COLUMNS"."TABLE_NAME" AS table_name,
"USER_TAB_COLUMNS"."COLUMN_NAME" AS column_name,
"USER_TAB_COLUMNS"."DATA_DEFAULT" AS default_value,
"USER_TAB_COLUMNS"."NULLABLE" AS is_nullable,
"USER_TAB_COLUMNS"."DATA_TYPE" AS data_type,
"USER_TAB_COLUMNS"."DATA_PRECISION" AS numeric_precision,
"USER_TAB_COLUMNS"."DATA_SCALE" AS numeric_scale,
"USER_CONSTRAINTS"."CONSTRAINT_TYPE" AS column_key
FROM
"USER_TAB_COLUMNS"
LEFT JOIN "USER_CONS_COLUMNS" ON "USER_TAB_COLUMNS"."TABLE_NAME" = "USER_CONS_COLUMNS"."TABLE_NAME"
AND "USER_TAB_COLUMNS"."COLUMN_NAME" = "USER_CONS_COLUMNS"."COLUMN_NAME"
LEFT JOIN "USER_CONSTRAINTS" ON "USER_CONS_COLUMNS"."CONSTRAINT_NAME" = "USER_CONSTRAINTS"."CONSTRAINT_NAME";
`);
const overview: SchemaOverview = {};
for (const column of columns[0]) {

@@ -34,2 +36,3 @@ if (column.table_name in overview === false) {

}
overview[column.table_name].columns[column.column_name] = {

@@ -36,0 +39,0 @@ ...column,

@@ -67,3 +67,5 @@ import KnexPostgres from 'knex-schema-inspector/dist/dialects/postgres';

...column,
default_value: this.parseDefaultValue(column.default_value),
default_value: column.default_value?.startsWith('nextval(')
? 'AUTO_INCREMENT'
: this.parseDefaultValue(column.default_value),
is_nullable: column.is_nullable === 'YES',

@@ -70,0 +72,0 @@ };

@@ -19,6 +19,9 @@ import KnexSQLite from 'knex-schema-inspector/dist/dialects/sqlite';

).map(({ name }) => name);
const tables = await this.tables();
const overview: SchemaOverview = {};
for (const table of tables) {
const columns = await this.knex.raw<RawColumn[]>(`PRAGMA table_info(??)`, table);
if (table in overview === false) {

@@ -30,2 +33,3 @@ overview[table] = {

}
for (const column of columns) {

@@ -32,0 +36,0 @@ overview[table].columns[column.name] = {

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc