duckdb-tinyorm 2.0.4 → 3.0.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/README.md CHANGED
@@ -37,12 +37,12 @@ npm install duckdb-tinyorm
37
37
  yarn add duckdb-tinyorm
38
38
  ```
39
39
 
40
- DuckDB TinyORM requires `reflect-metadata` for decorator support:
40
+ DuckDB TinyORM requires `reflect-metadata` and the DuckDB Node-API for decorator support:
41
41
 
42
42
  ```bash
43
- npm install reflect-metadata
43
+ npm install reflect-metadata @duckdb/node-api
44
44
  # or
45
- yarn add reflect-metadata
45
+ yarn add reflect-metadata @duckdb/node-api
46
46
  ```
47
47
 
48
48
  Make sure to import `reflect-metadata` at the beginning of your application:
@@ -134,6 +134,7 @@ main();
134
134
  - 🔍 **Query Builder**: Fluent API for building complex queries
135
135
  - 📊 **Data Export**: Export data to CSV, JSON, and Parquet formats
136
136
  - 📄 **Pagination**: Built-in support for paginating large datasets
137
+ - 🔄 **Promise-based API**: Uses the new native Promise support in DuckDB Node-API
137
138
 
138
139
  ## 🏗️ Entity Definition
139
140
 
@@ -376,7 +377,10 @@ const inMemoryDb = DuckDbRepository.getInstances({
376
377
  const fileDb = DuckDbRepository.getInstances({
377
378
  name: 'production',
378
379
  location: DuckDbLocation.File,
379
- filename: './data/mydb.db'
380
+ filename: './data/mydb.db',
381
+ options: {
382
+ threads: '4'
383
+ }
380
384
  });
381
385
  ```
382
386
 
@@ -1 +1,2 @@
1
- export declare function bulkInsert(connection: any, query: string): Promise<void>;
1
+ import { DuckDBConnection } from '@duckdb/node-api';
2
+ export declare function bulkInsert(connection: DuckDBConnection, query: string): Promise<void>;
@@ -2,18 +2,14 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.bulkInsert = bulkInsert;
4
4
  async function bulkInsert(connection, query) {
5
- return new Promise((resolve, reject) => {
6
- // Add logging to see the exact query being executed
7
- console.log("Executing bulk insert query:", query);
8
- connection.run(query, (err) => {
9
- if (err) {
10
- console.error("Error bulk inserting!", err);
11
- reject(err);
12
- }
13
- else {
14
- resolve();
15
- }
16
- });
17
- });
5
+ // Add logging to see the exact query being executed
6
+ console.log("Executing bulk insert query:", query);
7
+ try {
8
+ await connection.run(query);
9
+ }
10
+ catch (err) {
11
+ console.error("Error bulk inserting!", err);
12
+ throw err;
13
+ }
18
14
  }
19
15
  //# sourceMappingURL=bulk-insert.helper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bulk-insert.helper.js","sourceRoot":"","sources":["../../src/helpers/bulk-insert.helper.ts"],"names":[],"mappings":";;AAAA,gCAcC;AAdM,KAAK,UAAU,UAAU,CAAC,UAAe,EAAE,KAAa;IAC3D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnC,oDAAoD;QACpD,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;QAEnD,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAQ,EAAE,EAAE;YAC/B,IAAI,GAAG,EAAE,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;gBAC5C,MAAM,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC;iBAAM,CAAC;gBACJ,OAAO,EAAE,CAAC;YACd,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"bulk-insert.helper.js","sourceRoot":"","sources":["../../src/helpers/bulk-insert.helper.ts"],"names":[],"mappings":";;AAEA,gCAUC;AAVM,KAAK,UAAU,UAAU,CAAC,UAA4B,EAAE,KAAa;IACxE,oDAAoD;IACpD,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;IAEnD,IAAI,CAAC;QACD,MAAM,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;QAC5C,MAAM,GAAG,CAAC;IACd,CAAC;AACL,CAAC"}
@@ -1,18 +1,18 @@
1
- import { Connection } from 'duckdb';
2
- export declare function executeDuckDbQuery(connection?: Connection, query?: string): Promise<void>;
3
- export declare function bulkInsert(connection?: Connection, query?: string): Promise<void>;
4
- export declare function dropTable(connection?: Connection, tableName?: string): Promise<void>;
5
- export declare function saveToParquet(connection?: Connection, fileName?: string, tableName?: string, folder?: string): Promise<void>;
6
- export declare function deleteTableData(connection?: Connection, fileName?: string): Promise<any[]>;
7
- export declare function executeQuery(connection?: Connection, query?: string): Promise<any[]>;
8
- export declare function saveQueryToParquet(connection?: Connection, fileName?: string, query?: string, folder?: string): Promise<void>;
9
- export declare function exportToCSV(connection: Connection, source: string, fileName: string, options?: {
1
+ import { DuckDBConnection } from '@duckdb/node-api';
2
+ export declare function executeDuckDbQuery(connection?: DuckDBConnection, query?: string): Promise<void>;
3
+ export declare function bulkInsert(connection?: DuckDBConnection, query?: string): Promise<void>;
4
+ export declare function dropTable(connection?: DuckDBConnection, tableName?: string): Promise<void>;
5
+ export declare function saveToParquet(connection?: DuckDBConnection, fileName?: string, tableName?: string, folder?: string): Promise<void>;
6
+ export declare function deleteTableData(connection?: DuckDBConnection, tableName?: string): Promise<any[]>;
7
+ export declare function executeQuery(connection?: DuckDBConnection, query?: string): Promise<any[]>;
8
+ export declare function saveQueryToParquet(connection?: DuckDBConnection, fileName?: string, query?: string, folder?: string): Promise<void>;
9
+ export declare function exportToCSV(connection: DuckDBConnection, source: string, fileName: string, options?: {
10
10
  header?: boolean;
11
11
  delimiter?: string;
12
12
  }): Promise<void>;
13
- export declare function exportToJSON(connection: Connection, source: string, fileName: string, options?: {
13
+ export declare function exportToJSON(connection: DuckDBConnection, source: string, fileName: string, options?: {
14
14
  pretty?: boolean;
15
15
  }): Promise<void>;
16
- export declare function exportToParquet(connection: Connection, source: string, fileName: string, options?: {
16
+ export declare function exportToParquet(connection: DuckDBConnection, source: string, fileName: string, options?: {
17
17
  compression?: string;
18
18
  }): Promise<void>;
@@ -11,154 +11,145 @@ exports.exportToCSV = exportToCSV;
11
11
  exports.exportToJSON = exportToJSON;
12
12
  exports.exportToParquet = exportToParquet;
13
13
  async function executeDuckDbQuery(connection, query) {
14
- return new Promise((resolve, reject) => {
15
- connection?.run(query ?? "", (err, response) => {
16
- if (err) {
17
- return reject(err);
18
- }
19
- return resolve(response);
20
- });
21
- });
14
+ if (!connection || !query) {
15
+ throw new Error("Connection or query is missing");
16
+ }
17
+ await connection.run(query);
22
18
  }
23
19
  async function bulkInsert(connection, query) {
20
+ if (!connection) {
21
+ throw new Error("Connection is not established. Make sure you've connected to DuckDB before inserting data.");
22
+ }
23
+ if (!query || query.trim() === '') {
24
+ throw new Error("Query is empty or undefined");
25
+ }
26
+ // Add logging to see the exact query being executed
27
+ console.log("Executing bulk insert query:", query);
24
28
  try {
25
- await executeDuckDbQuery(connection, query);
29
+ await connection.run(query);
26
30
  }
27
31
  catch (err) {
28
- console.error('Error bulk inserting!', err);
32
+ console.error("Error bulk inserting!", err);
33
+ throw err;
29
34
  }
30
35
  }
31
36
  async function dropTable(connection, tableName) {
37
+ if (!connection || !tableName) {
38
+ throw new Error("Connection or table name is missing");
39
+ }
32
40
  const query = `DROP TABLE IF EXISTS ${tableName}`;
33
41
  try {
34
- await executeDuckDbQuery(connection, query);
42
+ await connection.run(query);
35
43
  }
36
44
  catch (err) {
37
45
  console.error(`Error dropping table "${tableName}":`, err);
46
+ throw err;
38
47
  }
39
48
  }
40
49
  async function saveToParquet(connection, fileName, tableName, folder) {
41
- return new Promise((resolve, reject) => {
42
- connection?.run(`COPY ${tableName} TO '${fileName}' (FORMAT PARQUET, COMPRESSION ZSTD)`, async function (err) {
43
- if (err) {
44
- console.log('dump failed', err);
45
- reject(err);
46
- }
47
- else {
48
- console.log(`Dumped table ${tableName} into ${fileName}`);
49
- try {
50
- // await fs.unlink(fileName);
51
- resolve();
52
- }
53
- catch (err) {
54
- console.log('Error uploading Parquet file to Azure Blob Storage:', err);
55
- return Promise.reject(err);
56
- }
57
- }
58
- });
59
- });
50
+ if (!connection || !fileName || !tableName) {
51
+ throw new Error("Connection, file name, or table name is missing");
52
+ }
53
+ const folderPath = folder ? `${folder}/${fileName}` : fileName;
54
+ const query = `COPY ${tableName} TO '${folderPath}' (FORMAT PARQUET, COMPRESSION ZSTD)`;
55
+ try {
56
+ await connection.run(query);
57
+ console.log(`Dumped table ${tableName} into ${folderPath}`);
58
+ }
59
+ catch (err) {
60
+ console.error(`Error saving to Parquet:`, err);
61
+ throw err;
62
+ }
60
63
  }
61
- async function deleteTableData(connection, fileName) {
62
- return new Promise((resolve, reject) => {
63
- connection?.all(`DROP TABLE ${fileName}`, (err, table) => {
64
- if (err) {
65
- return Promise.reject(err);
66
- }
67
- else {
68
- return resolve(table);
69
- }
70
- });
71
- });
64
+ async function deleteTableData(connection, tableName) {
65
+ if (!connection || !tableName) {
66
+ throw new Error("Connection or table name is missing");
67
+ }
68
+ const query = `DELETE FROM ${tableName}`;
69
+ try {
70
+ const reader = await connection.runAndReadAll(query);
71
+ return reader.getRowObjects();
72
+ }
73
+ catch (err) {
74
+ console.error(`Error deleting table data from "${tableName}":`, err);
75
+ throw err;
76
+ }
72
77
  }
73
78
  async function executeQuery(connection, query) {
74
- return new Promise((resolve, reject) => {
75
- connection?.all(query ?? "", (err, table) => {
76
- if (err) {
77
- return Promise.reject(err);
78
- }
79
- else {
80
- return resolve(table);
81
- }
82
- });
83
- });
79
+ if (!connection) {
80
+ throw new Error("Connection is not established. Make sure you've connected to DuckDB before executing queries.");
81
+ }
82
+ if (!query || query.trim() === '') {
83
+ throw new Error("Query is empty or undefined");
84
+ }
85
+ try {
86
+ const reader = await connection.runAndReadAll(query);
87
+ return reader.getRowObjects();
88
+ }
89
+ catch (err) {
90
+ console.error(`Error executing query: ${query}`, err);
91
+ throw err;
92
+ }
84
93
  }
85
94
  async function saveQueryToParquet(connection, fileName, query, folder) {
86
- return new Promise((resolve, reject) => {
87
- connection?.run(`COPY (${query}) TO '${fileName}' (FORMAT PARQUET, COMPRESSION ZSTD)`, async function (err) {
88
- if (err) {
89
- console.log('dump failed', err);
90
- reject(err);
91
- }
92
- else {
93
- try {
94
- // await fs.unlink(fileName);
95
- resolve();
96
- }
97
- catch (err) {
98
- console.log('Error uploading Parquet file to Azure Blob Storage:', err);
99
- return Promise.reject(err);
100
- }
101
- }
102
- });
103
- });
95
+ if (!connection || !fileName || !query) {
96
+ throw new Error("Connection, file name, or query is missing");
97
+ }
98
+ const folderPath = folder ? `${folder}/${fileName}` : fileName;
99
+ const copyQuery = `COPY (${query}) TO '${folderPath}' (FORMAT PARQUET, COMPRESSION ZSTD)`;
100
+ try {
101
+ await connection.run(copyQuery);
102
+ console.log(`Saved query results to ${folderPath}`);
103
+ }
104
+ catch (err) {
105
+ console.error(`Error saving query to Parquet:`, err);
106
+ throw err;
107
+ }
104
108
  }
105
- // Add these export helper functions
106
109
  async function exportToCSV(connection, source, fileName, options) {
107
110
  const header = options?.header !== false ? 'HEADER' : 'NO_HEADER';
108
111
  const delimiter = options?.delimiter ?? ',';
109
- return new Promise((resolve, reject) => {
110
- const isQuery = source.trim().toUpperCase().startsWith('SELECT');
111
- const copyCommand = isQuery
112
- ? `COPY (${source}) TO '${fileName}' (FORMAT CSV, ${header}, DELIMITER '${delimiter}')`
113
- : `COPY ${source} TO '${fileName}' (FORMAT CSV, ${header}, DELIMITER '${delimiter}')`;
114
- connection?.run(copyCommand, (err) => {
115
- if (err) {
116
- console.error('CSV export failed:', err);
117
- reject(err);
118
- }
119
- else {
120
- console.log(`Exported to CSV: ${fileName}`);
121
- resolve();
122
- }
123
- });
124
- });
112
+ const isQuery = source.trim().toUpperCase().startsWith('SELECT');
113
+ const copyCommand = isQuery
114
+ ? `COPY (${source}) TO '${fileName}' (FORMAT CSV, ${header}, DELIMITER '${delimiter}')`
115
+ : `COPY ${source} TO '${fileName}' (FORMAT CSV, ${header}, DELIMITER '${delimiter}')`;
116
+ try {
117
+ await connection.run(copyCommand);
118
+ console.log(`Exported to CSV: ${fileName}`);
119
+ }
120
+ catch (err) {
121
+ console.error('CSV export failed:', err);
122
+ throw err;
123
+ }
125
124
  }
126
125
  async function exportToJSON(connection, source, fileName, options) {
127
126
  const formatOption = options?.pretty ? 'FORMAT JSON, ARRAY TRUE' : 'FORMAT JSON';
128
- return new Promise((resolve, reject) => {
129
- const isQuery = source.trim().toUpperCase().startsWith('SELECT');
130
- const copyCommand = isQuery
131
- ? `COPY (${source}) TO '${fileName}' (${formatOption})`
132
- : `COPY ${source} TO '${fileName}' (${formatOption})`;
133
- connection?.run(copyCommand, (err) => {
134
- if (err) {
135
- console.error('JSON export failed:', err);
136
- reject(err);
137
- }
138
- else {
139
- console.log(`Exported to JSON: ${fileName}`);
140
- resolve();
141
- }
142
- });
143
- });
127
+ const isQuery = source.trim().toUpperCase().startsWith('SELECT');
128
+ const copyCommand = isQuery
129
+ ? `COPY (${source}) TO '${fileName}' (${formatOption})`
130
+ : `COPY ${source} TO '${fileName}' (${formatOption})`;
131
+ try {
132
+ await connection.run(copyCommand);
133
+ console.log(`Exported to JSON: ${fileName}`);
134
+ }
135
+ catch (err) {
136
+ console.error('JSON export failed:', err);
137
+ throw err;
138
+ }
144
139
  }
145
140
  async function exportToParquet(connection, source, fileName, options) {
146
141
  const compression = options?.compression ?? 'ZSTD'; // Default to ZSTD compression
147
- return new Promise((resolve, reject) => {
148
- const isQuery = source.trim().toUpperCase().startsWith('SELECT');
149
- const copyCommand = isQuery
150
- ? `COPY (${source}) TO '${fileName}' (FORMAT PARQUET, COMPRESSION ${compression})`
151
- : `COPY ${source} TO '${fileName}' (FORMAT PARQUET, COMPRESSION ${compression})`;
152
- connection?.run(copyCommand, (err) => {
153
- if (err) {
154
- console.error('Parquet export failed:', err);
155
- reject(err);
156
- }
157
- else {
158
- console.log(`Exported to Parquet: ${fileName}`);
159
- resolve();
160
- }
161
- });
162
- });
142
+ const isQuery = source.trim().toUpperCase().startsWith('SELECT');
143
+ const copyCommand = isQuery
144
+ ? `COPY (${source}) TO '${fileName}' (FORMAT PARQUET, COMPRESSION ${compression})`
145
+ : `COPY ${source} TO '${fileName}' (FORMAT PARQUET, COMPRESSION ${compression})`;
146
+ try {
147
+ await connection.run(copyCommand);
148
+ console.log(`Exported to Parquet: ${fileName}`);
149
+ }
150
+ catch (err) {
151
+ console.error('Parquet export failed:', err);
152
+ throw err;
153
+ }
163
154
  }
164
155
  //# sourceMappingURL=db.helper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"db.helper.js","sourceRoot":"","sources":["../../src/helpers/db.helper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"db.helper.js","sourceRoot":"","sources":["../../src/helpers/db.helper.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { Connection } from 'duckdb';
1
+ import { DuckDBConnection } from '@duckdb/node-api';
2
2
  export interface MigrationOptions {
3
3
  tableName?: string;
4
4
  }
@@ -10,7 +10,7 @@ export declare abstract class Migration {
10
10
  export declare class MigrationRunner {
11
11
  private readonly connection;
12
12
  private readonly migrationTableName;
13
- constructor(connection: Connection, options?: MigrationOptions);
13
+ constructor(connection: DuckDBConnection, options?: MigrationOptions);
14
14
  initialize(): Promise<void>;
15
15
  private createMigrationTableIfNotExists;
16
16
  applyMigrations(migrations: Migration[]): Promise<void>;
@@ -22,16 +22,13 @@ class MigrationRunner {
22
22
  applied_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
23
23
  )
24
24
  `;
25
- return new Promise((resolve, reject) => {
26
- this.connection.run(query, (err) => {
27
- if (err) {
28
- reject(err);
29
- }
30
- else {
31
- resolve();
32
- }
33
- });
34
- });
25
+ try {
26
+ await this.connection.run(query);
27
+ }
28
+ catch (error) {
29
+ console.error('Failed to create migration table:', error);
30
+ throw error;
31
+ }
35
32
  }
36
33
  async applyMigrations(migrations) {
37
34
  await this.initialize();
@@ -67,22 +64,20 @@ class MigrationRunner {
67
64
  }
68
65
  async getAppliedMigrations() {
69
66
  const query = `SELECT * FROM ${this.migrationTableName} ORDER BY id ASC`;
70
- return new Promise((resolve, reject) => {
71
- this.connection.all(query, (err, result) => {
72
- if (err) {
73
- reject(err);
74
- }
75
- else {
76
- // Cast the result to the expected type
77
- const typedResult = result.map((row) => ({
78
- id: typeof row.id === 'number' ? row.id : Number(row.id),
79
- version: String(row.version),
80
- applied_at: String(row.applied_at)
81
- }));
82
- resolve(typedResult);
83
- }
84
- });
85
- });
67
+ try {
68
+ const reader = await this.connection.runAndReadAll(query);
69
+ const rows = reader.getRowObjects();
70
+ // Cast the result to the expected type
71
+ return rows.map((row) => ({
72
+ id: typeof row.id === 'number' ? row.id : Number(row.id),
73
+ version: String(row.version),
74
+ applied_at: String(row.applied_at)
75
+ }));
76
+ }
77
+ catch (error) {
78
+ console.error('Failed to get applied migrations:', error);
79
+ throw error;
80
+ }
86
81
  }
87
82
  async applyMigration(migration) {
88
83
  const upQuery = migration.up();
@@ -127,16 +122,13 @@ class MigrationRunner {
127
122
  }
128
123
  }
129
124
  async executeQuery(query) {
130
- return new Promise((resolve, reject) => {
131
- this.connection.run(query, (err, result) => {
132
- if (err) {
133
- reject(err);
134
- }
135
- else {
136
- resolve(result);
137
- }
138
- });
139
- });
125
+ try {
126
+ return await this.connection.run(query);
127
+ }
128
+ catch (error) {
129
+ console.error(`Failed to execute query: ${query}`, error);
130
+ throw error;
131
+ }
140
132
  }
141
133
  }
142
134
  exports.MigrationRunner = MigrationRunner;
@@ -1 +1 @@
1
- {"version":3,"file":"migration.js","sourceRoot":"","sources":["../../src/migration/migration.ts"],"names":[],"mappings":";;;AASA,MAAsB,SAAS;CAI9B;AAJD,8BAIC;AAED,MAAa,eAAe;IAIH;IAHJ,kBAAkB,CAAS;IAE5C,YACqB,UAAsB,EACvC,UAA4B,EAAE;QADb,eAAU,GAAV,UAAU,CAAY;QAGvC,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,SAAS,IAAI,YAAY,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,UAAU;QACZ,MAAM,IAAI,CAAC,+BAA+B,EAAE,CAAC;IACjD,CAAC;IAEO,KAAK,CAAC,+BAA+B;QACzC,MAAM,KAAK,GAAG;yCACmB,IAAI,CAAC,kBAAkB;;;;;SAKvD,CAAC;QAEF,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACzC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;gBAC/B,IAAI,GAAG,EAAE,CAAC;oBACN,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChB,CAAC;qBAAM,CAAC;oBACJ,OAAO,EAAE,CAAC;gBACd,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,UAAuB;QACzC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QAExB,6BAA6B;QAC7B,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QAE9D,2CAA2C;QAC3C,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5D,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QAEvE,iDAAiD;QACjD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACjC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC1C,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;YACzC,CAAC;QACL,CAAC;IACL,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,UAAuB,EAAE,aAAsB;QAClE,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QAExB,iDAAiD;QACjD,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QAE9D,2CAA2C;QAC3C,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5D,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAE5E,yCAAyC;QACzC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACjC,IAAI,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;gBACzC,IAAI,aAAa,IAAI,SAAS,CAAC,OAAO,IAAI,aAAa,EAAE,CAAC;oBACtD,wDAAwD;oBACxD,MAAM;gBACV,CAAC;gBACD,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YAC1C,CAAC;QACL,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,oBAAoB;QAC9B,MAAM,KAAK,GAAG,iBAAiB,IAAI,CAAC,kBAAkB,kBAAkB,CAAC;QAEzE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;gBACvC,IAAI,GAAG,EAAE,CAAC;oBACN,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChB,CAAC;qBAAM,CAAC;oBACJ,uCAAuC;oBACvC,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,GAAc,EAAE,EAAE,CAAC,CAAC;wBAChD,EAAE,EAAE,OAAO,GAAG,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;wBACxD,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;wBAC5B,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;qBACrC,CAAC,CAAC,CAAC;oBACJ,OAAO,CAAC,WAAW,CAAC,CAAC;gBACzB,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,SAAoB;QAC7C,MAAM,OAAO,GAAG,SAAS,CAAC,EAAE,EAAE,CAAC;QAC/B,MAAM,WAAW,GAAG,eAAe,IAAI,CAAC,kBAAkB,uBAAuB,SAAS,CAAC,OAAO,IAAI,CAAC;QAEvG,oBAAoB;QACpB,MAAM,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;QAE7C,IAAI,CAAC;YACD,kBAAkB;YAClB,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YAEjC,mBAAmB;YACnB,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;YAErC,qBAAqB;YACrB,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAElC,OAAO,CAAC,GAAG,CAAC,aAAa,SAAS,CAAC,OAAO,uBAAuB,CAAC,CAAC;QACvE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,gCAAgC;YAChC,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;YACpC,OAAO,CAAC,KAAK,CAAC,6BAA6B,SAAS,CAAC,OAAO,GAAG,EAAE,KAAK,CAAC,CAAC;YACxE,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,SAAoB;QAC9C,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,WAAW,GAAG,eAAe,IAAI,CAAC,kBAAkB,qBAAqB,SAAS,CAAC,OAAO,GAAG,CAAC;QAEpG,oBAAoB;QACpB,MAAM,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;QAE7C,IAAI,CAAC;YACD,mBAAmB;YACnB,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAEnC,0BAA0B;YAC1B,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;YAErC,qBAAqB;YACrB,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAElC,OAAO,CAAC,GAAG,CAAC,aAAa,SAAS,CAAC,OAAO,wBAAwB,CAAC,CAAC;QACxE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,gCAAgC;YAChC,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;YACpC,OAAO,CAAC,KAAK,CAAC,8BAA8B,SAAS,CAAC,OAAO,GAAG,EAAE,KAAK,CAAC,CAAC;YACzE,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,KAAa;QACpC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;gBACvC,IAAI,GAAG,EAAE,CAAC;oBACN,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChB,CAAC;qBAAM,CAAC;oBACJ,OAAO,CAAC,MAAM,CAAC,CAAC;gBACpB,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AA7JD,0CA6JC"}
1
+ {"version":3,"file":"migration.js","sourceRoot":"","sources":["../../src/migration/migration.ts"],"names":[],"mappings":"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"}
@@ -8,16 +8,22 @@ export interface DuckDbConfig {
8
8
  name: string;
9
9
  location: DuckDbLocation;
10
10
  filename?: string;
11
+ options?: Record<string, string>;
11
12
  }
12
13
  export declare class DuckDbRepository {
13
- private db?;
14
+ private instance?;
14
15
  private connection?;
15
16
  private tables;
16
17
  private isClosed;
18
+ private connectionPromise;
19
+ private initialized;
17
20
  private static instance;
21
+ static getInstance(duckdbConfig?: DuckDbConfig): Promise<DuckDbRepository>;
18
22
  static getInstances(duckdbConfig?: DuckDbConfig): DuckDbRepository;
19
- protected constructor(location?: string);
20
- connect(): void;
23
+ protected constructor(location?: string, options?: Record<string, string>);
24
+ private initSync;
25
+ connect(): Promise<void>;
26
+ private ensureConnected;
21
27
  createTableIfNotExists<T>(tableName: string, classType: new () => T): Promise<void>;
22
28
  getDuckDbExtension(extension_name: string): Promise<any[]>;
23
29
  executeQuery(query: string): Promise<any[]>;
@@ -41,6 +47,7 @@ export declare class DuckDbRepository {
41
47
  private buildS3SecretQuery;
42
48
  private buildAzureSecretQuery;
43
49
  secretExists(secretName: string): Promise<boolean>;
50
+ close(): Promise<void>;
44
51
  }
45
52
  export interface ExportOptions {
46
53
  format: 'csv' | 'json' | 'parquet';