@directus/schema
Advanced tools
Comparing version 9.0.0-rc.56 to 9.0.0-rc.57
@@ -69,2 +69,3 @@ "use strict"; | ||
var oracledb_1 = __importDefault(require("knex-schema-inspector/dist/dialects/oracledb")); | ||
var lodash_1 = require("lodash"); | ||
var Oracle = /** @class */ (function (_super) { | ||
@@ -78,8 +79,9 @@ __extends(Oracle, _super); | ||
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\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")]; | ||
var columns, columnsLowercase, overview, _loop_1, _i, columnsLowercase_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\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: | ||
columns = _c.sent(); | ||
columns = _b.sent(); | ||
columnsLowercase = columns.map(function (column) { return lodash_1.mapKeys(column, function (value, key) { return key.toLowerCase(); }); }); | ||
overview = {}; | ||
@@ -89,5 +91,5 @@ _loop_1 = function (column) { | ||
overview[column.table_name] = { | ||
primary: (_a = columns[0].find(function (nested) { | ||
primary: ((_a = columnsLowercase.find(function (nested) { | ||
return nested.table_name === column.table_name && nested.column_key === 'P'; | ||
})) === null || _a === void 0 ? void 0 : _a.column_name, | ||
})) === null || _a === void 0 ? void 0 : _a.column_name) || 'id', | ||
columns: {}, | ||
@@ -98,4 +100,4 @@ }; | ||
}; | ||
for (_i = 0, _b = columns[0]; _i < _b.length; _i++) { | ||
column = _b[_i]; | ||
for (_i = 0, columnsLowercase_1 = columnsLowercase; _i < columnsLowercase_1.length; _i++) { | ||
column = columnsLowercase_1[_i]; | ||
_loop_1(column); | ||
@@ -102,0 +104,0 @@ } |
{ | ||
"name": "@directus/schema", | ||
"version": "9.0.0-rc.56", | ||
"version": "9.0.0-rc.57", | ||
"description": "Utility for extracting information about existing DB schema", | ||
@@ -46,5 +46,6 @@ "main": "dist/index.js", | ||
"dependencies": { | ||
"knex-schema-inspector": "^1.2.0" | ||
"knex-schema-inspector": "^1.2.0", | ||
"lodash": "^4.17.21" | ||
}, | ||
"gitHead": "f8f843e5be40cc7b6f768908121d8ef9fd7005cc" | ||
"gitHead": "1bfa128308b9fd45f9c4f860be5b982dccaa115c" | ||
} |
import KnexOracle from 'knex-schema-inspector/dist/dialects/oracledb'; | ||
import { SchemaOverview } from '../types/overview'; | ||
import { SchemaInspector } from '../types/schema'; | ||
import { mapKeys } from 'lodash'; | ||
export default class Oracle extends KnexOracle implements SchemaInspector { | ||
async overview() { | ||
const columns = await this.knex.raw(` | ||
type RawColumn = { | ||
TABLE_NAME: string; | ||
COLUMN_NAME: string; | ||
DEFAULT_VALUE: string; | ||
IS_NULLABLE: string; | ||
DATA_TYPE: string; | ||
NUMERIC_PRECISION: number | null; | ||
NUMERIC_SCALE: number | null; | ||
COLUMN_KEY: string; | ||
}; | ||
type RawColumnLowercase = { | ||
table_name: string; | ||
column_name: string; | ||
default_value: string; | ||
is_nullable: string; | ||
data_type: string; | ||
numeric_precision: number | null; | ||
numeric_scale: number | null; | ||
column_key: string; | ||
}; | ||
const columns = await this.knex.raw<RawColumn[]>(` | ||
SELECT | ||
"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 | ||
"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 | ||
@@ -24,10 +47,15 @@ "USER_TAB_COLUMNS" | ||
const columnsLowercase: RawColumnLowercase[] = columns.map( | ||
(column) => mapKeys(column, (value, key) => key.toLowerCase()) as RawColumnLowercase | ||
); | ||
const overview: SchemaOverview = {}; | ||
for (const column of columns[0]) { | ||
for (const column of columnsLowercase) { | ||
if (column.table_name in overview === false) { | ||
overview[column.table_name] = { | ||
primary: columns[0].find((nested: { column_key: string; table_name: string }) => { | ||
return nested.table_name === column.table_name && nested.column_key === 'P'; | ||
})?.column_name, | ||
primary: | ||
columnsLowercase.find((nested: { column_key: string; table_name: string }) => { | ||
return nested.table_name === column.table_name && nested.column_key === 'P'; | ||
})?.column_name || 'id', | ||
columns: {}, | ||
@@ -42,4 +70,5 @@ }; | ||
} | ||
return overview; | ||
} | ||
} |
89211
986
2
+ Addedlodash@^4.17.21
+ Addedlodash@4.17.21(transitive)