@duckcodeailabs/dql-connectors 1.6.16 → 1.6.18

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.
Files changed (41) hide show
  1. package/dist/drivers/athena.d.ts +17 -0
  2. package/dist/drivers/athena.d.ts.map +1 -0
  3. package/dist/drivers/athena.js +157 -0
  4. package/dist/drivers/athena.js.map +1 -0
  5. package/dist/drivers/bigquery.d.ts +14 -0
  6. package/dist/drivers/bigquery.d.ts.map +1 -0
  7. package/dist/drivers/bigquery.js +230 -0
  8. package/dist/drivers/bigquery.js.map +1 -0
  9. package/dist/drivers/clickhouse.d.ts +14 -0
  10. package/dist/drivers/clickhouse.d.ts.map +1 -0
  11. package/dist/drivers/clickhouse.js +103 -0
  12. package/dist/drivers/clickhouse.js.map +1 -0
  13. package/dist/drivers/fabric.d.ts +7 -0
  14. package/dist/drivers/fabric.d.ts.map +1 -0
  15. package/dist/drivers/fabric.js +12 -0
  16. package/dist/drivers/fabric.js.map +1 -0
  17. package/dist/drivers/mssql.d.ts +14 -0
  18. package/dist/drivers/mssql.d.ts.map +1 -0
  19. package/dist/drivers/mssql.js +164 -0
  20. package/dist/drivers/mssql.js.map +1 -0
  21. package/dist/drivers/mysql.d.ts +13 -0
  22. package/dist/drivers/mysql.d.ts.map +1 -0
  23. package/dist/drivers/mysql.js +136 -0
  24. package/dist/drivers/mysql.js.map +1 -0
  25. package/dist/drivers/postgresql.d.ts +13 -0
  26. package/dist/drivers/postgresql.d.ts.map +1 -0
  27. package/dist/drivers/postgresql.js +117 -0
  28. package/dist/drivers/postgresql.js.map +1 -0
  29. package/dist/drivers/redshift.d.ts +7 -0
  30. package/dist/drivers/redshift.d.ts.map +1 -0
  31. package/dist/drivers/redshift.js +12 -0
  32. package/dist/drivers/redshift.js.map +1 -0
  33. package/dist/drivers/sqlite.d.ts +13 -0
  34. package/dist/drivers/sqlite.d.ts.map +1 -0
  35. package/dist/drivers/sqlite.js +104 -0
  36. package/dist/drivers/sqlite.js.map +1 -0
  37. package/dist/drivers/trino.d.ts +14 -0
  38. package/dist/drivers/trino.d.ts.map +1 -0
  39. package/dist/drivers/trino.js +133 -0
  40. package/dist/drivers/trino.js.map +1 -0
  41. package/package.json +1 -1
@@ -0,0 +1,14 @@
1
+ import type { DatabaseConnector, ConnectionConfig, TableInfo, ColumnInfo } from '../connector.js';
2
+ import type { QueryResult } from '../result-types.js';
3
+ export declare class TrinoConnector implements DatabaseConnector {
4
+ readonly driverName = "trino";
5
+ private endpoint;
6
+ private headers;
7
+ connect(config: ConnectionConfig): Promise<void>;
8
+ execute(sql: string, params?: unknown[]): Promise<QueryResult>;
9
+ disconnect(): Promise<void>;
10
+ ping(): Promise<boolean>;
11
+ listTables(): Promise<TableInfo[]>;
12
+ listColumns(schema?: string, table?: string): Promise<ColumnInfo[]>;
13
+ }
14
+ //# sourceMappingURL=trino.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trino.d.ts","sourceRoot":"","sources":["../../src/drivers/trino.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClG,OAAO,KAAK,EAAE,WAAW,EAA+B,MAAM,oBAAoB,CAAC;AASnF,qBAAa,cAAe,YAAW,iBAAiB;IACtD,QAAQ,CAAC,UAAU,WAAW;IAC9B,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,OAAO,CAA8B;IAEvC,OAAO,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBhD,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IA6D9D,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3B,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;IASxB,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAelC,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;CAqB1E"}
@@ -0,0 +1,133 @@
1
+ export class TrinoConnector {
2
+ driverName = 'trino';
3
+ endpoint = null;
4
+ headers = {};
5
+ async connect(config) {
6
+ const protocol = config.ssl === false ? 'http' : 'https';
7
+ const host = config.host ?? 'localhost';
8
+ const port = config.port ?? 8080;
9
+ this.endpoint = `${protocol}://${host}:${port}`;
10
+ this.headers = {
11
+ 'X-Trino-User': config.username ?? 'dql',
12
+ 'X-Trino-Catalog': config.catalog ?? config.database ?? 'system',
13
+ 'X-Trino-Schema': config.schema ?? 'default',
14
+ 'Content-Type': 'text/plain; charset=utf-8',
15
+ };
16
+ if (config.username && config.password) {
17
+ const token = Buffer.from(`${config.username}:${config.password}`).toString('base64');
18
+ this.headers.Authorization = `Basic ${token}`;
19
+ }
20
+ }
21
+ async execute(sql, params) {
22
+ if (!this.endpoint) {
23
+ throw new Error('Trino connector not connected. Call connect() first.');
24
+ }
25
+ if (params && params.length > 0) {
26
+ throw new Error('Trino connector does not yet support positional parameters.');
27
+ }
28
+ const startTime = performance.now();
29
+ const initialResponse = await fetch(`${this.endpoint}/v1/statement`, {
30
+ method: 'POST',
31
+ headers: this.headers,
32
+ body: sql,
33
+ });
34
+ if (!initialResponse.ok) {
35
+ throw new Error(`Trino query failed: ${await initialResponse.text()}`);
36
+ }
37
+ const rows = [];
38
+ let columns = [];
39
+ let payload = await initialResponse.json();
40
+ while (true) {
41
+ if (payload.error?.message) {
42
+ throw new Error(`Trino query failed: ${payload.error.message}`);
43
+ }
44
+ if (payload.columns && columns.length === 0) {
45
+ columns = payload.columns.map((column) => ({
46
+ name: column.name,
47
+ type: mapTrinoType(column.type),
48
+ driverType: column.type,
49
+ }));
50
+ }
51
+ if (payload.data && columns.length > 0) {
52
+ for (const row of payload.data) {
53
+ rows.push(Object.fromEntries(columns.map((column, index) => [column.name, row[index]])));
54
+ }
55
+ }
56
+ if (!payload.nextUri) {
57
+ break;
58
+ }
59
+ const nextResponse = await fetch(payload.nextUri, { headers: this.headers });
60
+ if (!nextResponse.ok) {
61
+ throw new Error(`Trino pagination failed: ${await nextResponse.text()}`);
62
+ }
63
+ payload = await nextResponse.json();
64
+ }
65
+ return {
66
+ columns,
67
+ rows,
68
+ rowCount: rows.length,
69
+ executionTimeMs: performance.now() - startTime,
70
+ };
71
+ }
72
+ async disconnect() {
73
+ this.endpoint = null;
74
+ this.headers = {};
75
+ }
76
+ async ping() {
77
+ try {
78
+ await this.execute('SELECT 1 AS ok');
79
+ return true;
80
+ }
81
+ catch {
82
+ return false;
83
+ }
84
+ }
85
+ async listTables() {
86
+ const catalog = this.headers['X-Trino-Catalog'] ?? 'system';
87
+ const result = await this.execute(`SELECT table_schema, table_name, table_type
88
+ FROM ${catalog}.information_schema.tables
89
+ WHERE table_schema NOT IN ('information_schema')
90
+ ORDER BY table_schema, table_name`);
91
+ return result.rows.map((row) => ({
92
+ schema: String(row['table_schema'] ?? ''),
93
+ name: String(row['table_name'] ?? ''),
94
+ type: String(row['table_type'] ?? ''),
95
+ }));
96
+ }
97
+ async listColumns(schema, table) {
98
+ const catalog = this.headers['X-Trino-Catalog'] ?? 'system';
99
+ let sql = `SELECT table_schema, table_name, column_name, data_type, ordinal_position
100
+ FROM ${catalog}.information_schema.columns
101
+ WHERE table_schema NOT IN ('information_schema')`;
102
+ if (schema) {
103
+ sql += ` AND table_schema = '${schema.replace(/'/g, "''")}'`;
104
+ }
105
+ if (table) {
106
+ sql += ` AND table_name = '${table.replace(/'/g, "''")}'`;
107
+ }
108
+ sql += ` ORDER BY table_schema, table_name, ordinal_position`;
109
+ const result = await this.execute(sql);
110
+ return result.rows.map((row) => ({
111
+ schema: String(row['table_schema'] ?? ''),
112
+ table: String(row['table_name'] ?? ''),
113
+ name: String(row['column_name'] ?? ''),
114
+ dataType: String(row['data_type'] ?? ''),
115
+ ordinalPosition: Number(row['ordinal_position'] ?? 0),
116
+ }));
117
+ }
118
+ }
119
+ function mapTrinoType(driverType) {
120
+ const lower = driverType.toLowerCase();
121
+ if (lower.includes('int') || lower.includes('double') || lower.includes('real') || lower.includes('decimal'))
122
+ return 'number';
123
+ if (lower === 'date')
124
+ return 'date';
125
+ if (lower.includes('timestamp'))
126
+ return 'datetime';
127
+ if (lower === 'boolean')
128
+ return 'boolean';
129
+ if (lower.includes('char') || lower.includes('varchar'))
130
+ return 'string';
131
+ return 'unknown';
132
+ }
133
+ //# sourceMappingURL=trino.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trino.js","sourceRoot":"","sources":["../../src/drivers/trino.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@duckcodeailabs/dql-connectors",
3
- "version": "1.6.16",
3
+ "version": "1.6.18",
4
4
  "description": "DQL database connectors for local files, SQL warehouses, and lakehouse engines",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",