@lightdash/common
Advanced tools
@@ -14,3 +14,3 @@ import { DbtMetric, DbtModelNode, SupportedDbtAdapter } from '../types/dbt'; | ||
| }; | ||
| }, throwOnMissingCatalogEntry?: boolean) => DbtModelNode[]; | ||
| }, throwOnMissingCatalogEntry?: boolean, caseSensitiveMatching?: boolean) => DbtModelNode[]; | ||
| export declare const getSchemaStructureFromDbtModels: (dbtModels: DbtModelNode[]) => { | ||
@@ -17,0 +17,0 @@ database: string; |
@@ -237,9 +237,18 @@ "use strict"; | ||
| exports.convertExplores = convertExplores; | ||
| const attachTypesToModels = (models, warehouseCatalog, throwOnMissingCatalogEntry = true) => { | ||
| const attachTypesToModels = (models, warehouseCatalog, throwOnMissingCatalogEntry = true, caseSensitiveMatching = true) => { | ||
| // Check that all models appear in the warehouse | ||
| models.forEach(({ database, schema, name }) => { | ||
| if ((!(database in warehouseCatalog) || | ||
| !(schema in warehouseCatalog[database]) || | ||
| !(name in warehouseCatalog[database][schema])) && | ||
| throwOnMissingCatalogEntry) { | ||
| const databaseMatch = Object.keys(warehouseCatalog).find((db) => caseSensitiveMatching | ||
| ? db === database | ||
| : db.toLowerCase() === database.toLowerCase()); | ||
| const schemaMatch = databaseMatch && | ||
| Object.keys(warehouseCatalog[databaseMatch]).find((s) => caseSensitiveMatching | ||
| ? s === schema | ||
| : s.toLowerCase() === schema.toLowerCase()); | ||
| const tableMatch = databaseMatch && | ||
| schemaMatch && | ||
| Object.keys(warehouseCatalog[databaseMatch][schemaMatch]).find((t) => caseSensitiveMatching | ||
| ? t === name | ||
| : t.toLowerCase() === name.toLowerCase()); | ||
| if (!tableMatch && throwOnMissingCatalogEntry) { | ||
| throw new errors_1.MissingCatalogEntryError(`Model "${name}" was expected in your target warehouse at "${database}.${schema}.${name}". Does the table exist in your target data warehouse?`, {}); | ||
@@ -249,7 +258,22 @@ } | ||
| const getType = ({ database, schema, name }, columnName) => { | ||
| if (database in warehouseCatalog && | ||
| schema in warehouseCatalog[database] && | ||
| name in warehouseCatalog[database][schema] && | ||
| columnName in warehouseCatalog[database][schema][name]) { | ||
| return warehouseCatalog[database][schema][name][columnName]; | ||
| const databaseMatch = Object.keys(warehouseCatalog).find((db) => caseSensitiveMatching | ||
| ? db === database | ||
| : db.toLowerCase() === database.toLowerCase()); | ||
| const schemaMatch = databaseMatch && | ||
| Object.keys(warehouseCatalog[databaseMatch]).find((s) => caseSensitiveMatching | ||
| ? s === schema | ||
| : s.toLowerCase() === schema.toLowerCase()); | ||
| const tableMatch = databaseMatch && | ||
| schemaMatch && | ||
| Object.keys(warehouseCatalog[databaseMatch][schemaMatch]).find((t) => caseSensitiveMatching | ||
| ? t === name | ||
| : t.toLowerCase() === name.toLowerCase()); | ||
| const columnMatch = databaseMatch && | ||
| schemaMatch && | ||
| tableMatch && | ||
| Object.keys(warehouseCatalog[databaseMatch][schemaMatch][tableMatch]).find((c) => caseSensitiveMatching | ||
| ? c === columnName | ||
| : c.toLowerCase() === columnName.toLowerCase()); | ||
| if (databaseMatch && schemaMatch && tableMatch && columnMatch) { | ||
| return warehouseCatalog[databaseMatch][schemaMatch][tableMatch][columnMatch]; | ||
| } | ||
@@ -256,0 +280,0 @@ if (throwOnMissingCatalogEntry) { |
+1
-1
| { | ||
| "name": "@lightdash/common", | ||
| "version": "0.119.0", | ||
| "version": "0.119.1", | ||
| "main": "dist/index.js", | ||
@@ -5,0 +5,0 @@ "types": "dist/index.d.ts", |
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
346334
0.42%9329
0.26%