@lightdash/warehouses 2.316.1 → 2.317.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo.build +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/warehouseClients/ListedDatabasesPostgresWarehouseClient.d.ts +22 -0
- package/dist/warehouseClients/ListedDatabasesPostgresWarehouseClient.d.ts.map +1 -0
- package/dist/warehouseClients/ListedDatabasesPostgresWarehouseClient.js +60 -0
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ export * from './warehouseClients/DatabricksWarehouseClient';
|
|
|
8
8
|
export * from './warehouseClients/DuckdbWarehouseClient';
|
|
9
9
|
export { MotherduckInstanceCache } from './warehouseClients/MotherduckInstanceCache';
|
|
10
10
|
export type { MotherduckCacheEvent } from './warehouseClients/MotherduckInstanceCache';
|
|
11
|
+
export * from './warehouseClients/ListedDatabasesPostgresWarehouseClient';
|
|
11
12
|
export * from './warehouseClients/PostgresWarehouseClient';
|
|
12
13
|
export * from './warehouseClients/RedshiftWarehouseClient';
|
|
13
14
|
export * from './warehouseClients/redshiftIamCredentials';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,qCAAqC,CAAC;AACpD,cAAc,kCAAkC,CAAC;AACjD,cAAc,0CAA0C,CAAC;AACzD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,0CAA0C,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AACrF,YAAY,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AACvF,cAAc,4CAA4C,CAAC;AAC3D,cAAc,4CAA4C,CAAC;AAC3D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,6CAA6C,CAAC;AAC5D,cAAc,yCAAyC,CAAC;AACxD,cAAc,+BAA+B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,qCAAqC,CAAC;AACpD,cAAc,kCAAkC,CAAC;AACjD,cAAc,0CAA0C,CAAC;AACzD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,0CAA0C,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AACrF,YAAY,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AACvF,cAAc,2DAA2D,CAAC;AAC1E,cAAc,4CAA4C,CAAC;AAC3D,cAAc,4CAA4C,CAAC;AAC3D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,6CAA6C,CAAC;AAC5D,cAAc,yCAAyC,CAAC;AACxD,cAAc,+BAA+B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -25,6 +25,7 @@ __exportStar(require("./warehouseClients/DatabricksWarehouseClient"), exports);
|
|
|
25
25
|
__exportStar(require("./warehouseClients/DuckdbWarehouseClient"), exports);
|
|
26
26
|
var MotherduckInstanceCache_1 = require("./warehouseClients/MotherduckInstanceCache");
|
|
27
27
|
Object.defineProperty(exports, "MotherduckInstanceCache", { enumerable: true, get: function () { return MotherduckInstanceCache_1.MotherduckInstanceCache; } });
|
|
28
|
+
__exportStar(require("./warehouseClients/ListedDatabasesPostgresWarehouseClient"), exports);
|
|
28
29
|
__exportStar(require("./warehouseClients/PostgresWarehouseClient"), exports);
|
|
29
30
|
__exportStar(require("./warehouseClients/RedshiftWarehouseClient"), exports);
|
|
30
31
|
__exportStar(require("./warehouseClients/redshiftIamCredentials"), exports);
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type CreatePostgresCredentials, type WarehouseCatalog } from '@lightdash/common';
|
|
2
|
+
import { PostgresWarehouseClient } from './PostgresWarehouseClient';
|
|
3
|
+
type CatalogRequest = {
|
|
4
|
+
database: string;
|
|
5
|
+
schema: string;
|
|
6
|
+
table: string;
|
|
7
|
+
};
|
|
8
|
+
export type WarehouseListedDatabases = {
|
|
9
|
+
listAllDatabases: boolean;
|
|
10
|
+
additionalDatabases: string[];
|
|
11
|
+
};
|
|
12
|
+
export declare class ListedDatabasesPostgresWarehouseClient extends PostgresWarehouseClient {
|
|
13
|
+
private readonly listedDatabases;
|
|
14
|
+
private readonly onSkippedDatabase;
|
|
15
|
+
constructor(credentials: CreatePostgresCredentials, listedDatabases: WarehouseListedDatabases, onSkippedDatabase: (database: string) => void);
|
|
16
|
+
private isListedDatabase;
|
|
17
|
+
getCatalog(requests: CatalogRequest[]): Promise<WarehouseCatalog>;
|
|
18
|
+
getCatalogForListedDatabases(requests: CatalogRequest[]): Promise<WarehouseCatalog>;
|
|
19
|
+
private getListedDatabaseCatalog;
|
|
20
|
+
}
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=ListedDatabasesPostgresWarehouseClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ListedDatabasesPostgresWarehouseClient.d.ts","sourceRoot":"","sources":["../../src/warehouseClients/ListedDatabasesPostgresWarehouseClient.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,yBAAyB,EAC9B,KAAK,gBAAgB,EACxB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,KAAK,cAAc,GAAG;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACnC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,mBAAmB,EAAE,MAAM,EAAE,CAAC;CACjC,CAAC;AASF,qBAAa,sCAAuC,SAAQ,uBAAuB;IAC/E,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA2B;IAE3D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA6B;IAE/D,YACI,WAAW,EAAE,yBAAyB,EACtC,eAAe,EAAE,wBAAwB,EACzC,iBAAiB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,EAKhD;IAED,OAAO,CAAC,gBAAgB;IAQlB,UAAU,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAEtE;IAEK,4BAA4B,CAC9B,QAAQ,EAAE,cAAc,EAAE,GAC3B,OAAO,CAAC,gBAAgB,CAAC,CAuB3B;YAEa,wBAAwB;CAgBzC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ListedDatabasesPostgresWarehouseClient = void 0;
|
|
4
|
+
const PostgresWarehouseClient_1 = require("./PostgresWarehouseClient");
|
|
5
|
+
const MISSING_DATABASE = '3D000';
|
|
6
|
+
const isMissingDatabaseError = (error, database) => error instanceof Error &&
|
|
7
|
+
(error.code === MISSING_DATABASE ||
|
|
8
|
+
error.message.includes(`database "${database}" does not exist`));
|
|
9
|
+
class ListedDatabasesPostgresWarehouseClient extends PostgresWarehouseClient_1.PostgresWarehouseClient {
|
|
10
|
+
constructor(credentials, listedDatabases, onSkippedDatabase) {
|
|
11
|
+
super(credentials);
|
|
12
|
+
this.listedDatabases = listedDatabases;
|
|
13
|
+
this.onSkippedDatabase = onSkippedDatabase;
|
|
14
|
+
}
|
|
15
|
+
isListedDatabase(database) {
|
|
16
|
+
if (database === this.credentials.dbname)
|
|
17
|
+
return false;
|
|
18
|
+
return (this.listedDatabases.listAllDatabases ||
|
|
19
|
+
this.listedDatabases.additionalDatabases.includes(database));
|
|
20
|
+
}
|
|
21
|
+
async getCatalog(requests) {
|
|
22
|
+
return this.getCatalogForListedDatabases(requests);
|
|
23
|
+
}
|
|
24
|
+
async getCatalogForListedDatabases(requests) {
|
|
25
|
+
const requestsByListedDatabase = new Map();
|
|
26
|
+
const connectionRequests = [];
|
|
27
|
+
requests.forEach((request) => {
|
|
28
|
+
if (!this.isListedDatabase(request.database)) {
|
|
29
|
+
connectionRequests.push(request);
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
const databaseRequests = requestsByListedDatabase.get(request.database) ?? [];
|
|
33
|
+
databaseRequests.push(request);
|
|
34
|
+
requestsByListedDatabase.set(request.database, databaseRequests);
|
|
35
|
+
});
|
|
36
|
+
const catalogs = await Promise.all([
|
|
37
|
+
connectionRequests.length > 0
|
|
38
|
+
? super.getCatalog(connectionRequests)
|
|
39
|
+
: {},
|
|
40
|
+
...[...requestsByListedDatabase].map(([database, databaseRequests]) => this.getListedDatabaseCatalog(database, databaseRequests)),
|
|
41
|
+
]);
|
|
42
|
+
return Object.assign({}, ...catalogs);
|
|
43
|
+
}
|
|
44
|
+
async getListedDatabaseCatalog(database, requests) {
|
|
45
|
+
const client = new PostgresWarehouseClient_1.PostgresWarehouseClient({
|
|
46
|
+
...this.credentials,
|
|
47
|
+
dbname: database,
|
|
48
|
+
});
|
|
49
|
+
try {
|
|
50
|
+
return await client.getCatalog(requests);
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
if (!isMissingDatabaseError(error, database))
|
|
54
|
+
throw error;
|
|
55
|
+
this.onSkippedDatabase(database);
|
|
56
|
+
return {};
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
exports.ListedDatabasesPostgresWarehouseClient = ListedDatabasesPostgresWarehouseClient;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lightdash/warehouses",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.317.0",
|
|
4
4
|
"description": "Warehouse connectors for Lightdash",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"@databricks/sql": "1.13.0",
|
|
22
22
|
"@duckdb/node-api": "1.5.2-r.2",
|
|
23
23
|
"@google-cloud/bigquery": "8.3.1",
|
|
24
|
-
"@lightdash/common": "2.
|
|
24
|
+
"@lightdash/common": "2.317.0",
|
|
25
25
|
"node-fetch": "2.7.0",
|
|
26
26
|
"pg": "8.13.1",
|
|
27
27
|
"pg-cursor": "2.10.0",
|