@visactor/vquery 0.1.50 → 0.2.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/dataset/dataset.d.ts +3 -3
- package/dist/index.cjs +12 -13
- package/dist/index.js +12 -13
- package/dist/vquery.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DatasetColumn, QueryDSL } from '../types';
|
|
1
|
+
import { DatasetColumn, DatasetSource, QueryDSL } from '../types';
|
|
2
2
|
import { DuckDB } from '../db/duckDb';
|
|
3
3
|
import { IndexedDB } from '../db/indexedDb';
|
|
4
4
|
export declare class Dataset {
|
|
@@ -6,8 +6,8 @@ export declare class Dataset {
|
|
|
6
6
|
private indexedDB;
|
|
7
7
|
private _datasetId;
|
|
8
8
|
constructor(duckDB: DuckDB, indexedDB: IndexedDB, datasetId: string);
|
|
9
|
-
init(temporaryColumns?: DatasetColumn[]): Promise<void>;
|
|
10
|
-
createOrReplaceView(columns
|
|
9
|
+
init(temporaryColumns?: DatasetColumn[], temporaryDatasetSource?: DatasetSource): Promise<void>;
|
|
10
|
+
createOrReplaceView(columns: DatasetColumn[], datasetSource: DatasetSource): Promise<void>;
|
|
11
11
|
query<T extends Record<string, number | string>>(queryDSL: QueryDSL<T>): Promise<{
|
|
12
12
|
performance: {
|
|
13
13
|
startAt: string;
|
package/dist/index.cjs
CHANGED
|
@@ -185,13 +185,14 @@ class Dataset {
|
|
|
185
185
|
this.indexedDB = indexedDB1;
|
|
186
186
|
this._datasetId = datasetId;
|
|
187
187
|
}
|
|
188
|
-
async init(temporaryColumns
|
|
188
|
+
async init(temporaryColumns, temporaryDatasetSource) {
|
|
189
189
|
const datasetInfo = await this.indexedDB.readDataset(this._datasetId);
|
|
190
190
|
if (!datasetInfo) throw new Error(`Dataset ${this._datasetId} not found`);
|
|
191
|
-
const columns = temporaryColumns
|
|
192
|
-
|
|
191
|
+
const columns = temporaryColumns ? temporaryColumns : datasetInfo.datasetSchema.columns;
|
|
192
|
+
const datasetSource = temporaryDatasetSource || datasetInfo.datasetSource;
|
|
193
|
+
if (columns.length > 0 && datasetSource) await this.createOrReplaceView(columns, datasetSource);
|
|
193
194
|
}
|
|
194
|
-
async createOrReplaceView(columns
|
|
195
|
+
async createOrReplaceView(columns, datasetSource) {
|
|
195
196
|
const readFunctionMap = {
|
|
196
197
|
csv: 'read_csv_auto',
|
|
197
198
|
json: 'read_json_auto',
|
|
@@ -205,13 +206,10 @@ class Dataset {
|
|
|
205
206
|
datetime: 'TIMESTAMP',
|
|
206
207
|
timestamp: 'TIMESTAMP'
|
|
207
208
|
};
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
const readFunction = readFunctionMap[dataSource.type];
|
|
213
|
-
if (!readFunction) throw new Error(`Unsupported dataSource type: ${dataSource.type}`);
|
|
214
|
-
await this.duckDB.writeFile(this._datasetId, dataSource.blob);
|
|
209
|
+
if (datasetSource) {
|
|
210
|
+
const readFunction = readFunctionMap[datasetSource.type];
|
|
211
|
+
if (!readFunction) throw new Error(`Unsupported dataSource type: ${datasetSource.type}`);
|
|
212
|
+
await this.duckDB.writeFile(this._datasetId, datasetSource.blob);
|
|
215
213
|
const columnsStruct = `{${columns.map((c)=>`'${c.name}': '${dataTypeMap[c.type] || 'VARCHAR'}'`).join(', ')}}`;
|
|
216
214
|
const columnNames = columns.map((c)=>`"${c.name}"`).join(', ');
|
|
217
215
|
const createViewSql = `CREATE OR REPLACE VIEW "${this._datasetId}" AS SELECT ${columnNames} FROM ${readFunction}('${this._datasetId}', columns=${columnsStruct})`;
|
|
@@ -536,11 +534,12 @@ class VQuery {
|
|
|
536
534
|
await this.checkDatasetExists(datasetId);
|
|
537
535
|
await this.indexedDB.deleteDataset(datasetId);
|
|
538
536
|
}
|
|
539
|
-
async connectDataset(datasetId, temporaryColumns
|
|
537
|
+
async connectDataset(datasetId, temporaryColumns, temporaryRawDatasetSource) {
|
|
540
538
|
await this.checkInitialized();
|
|
541
539
|
await this.checkDatasetExists(datasetId);
|
|
542
540
|
const dataset = new Dataset(this.duckDB, this.indexedDB, datasetId);
|
|
543
|
-
await
|
|
541
|
+
const temporaryDatasetSource = temporaryRawDatasetSource ? await DatasetSourceBuilder.from(temporaryRawDatasetSource).build() : void 0;
|
|
542
|
+
await dataset.init(temporaryColumns, temporaryDatasetSource);
|
|
544
543
|
return dataset;
|
|
545
544
|
}
|
|
546
545
|
async hasDataset(datasetId) {
|
package/dist/index.js
CHANGED
|
@@ -150,13 +150,14 @@ class Dataset {
|
|
|
150
150
|
this.indexedDB = indexedDB1;
|
|
151
151
|
this._datasetId = datasetId;
|
|
152
152
|
}
|
|
153
|
-
async init(temporaryColumns
|
|
153
|
+
async init(temporaryColumns, temporaryDatasetSource) {
|
|
154
154
|
const datasetInfo = await this.indexedDB.readDataset(this._datasetId);
|
|
155
155
|
if (!datasetInfo) throw new Error(`Dataset ${this._datasetId} not found`);
|
|
156
|
-
const columns = temporaryColumns
|
|
157
|
-
|
|
156
|
+
const columns = temporaryColumns ? temporaryColumns : datasetInfo.datasetSchema.columns;
|
|
157
|
+
const datasetSource = temporaryDatasetSource || datasetInfo.datasetSource;
|
|
158
|
+
if (columns.length > 0 && datasetSource) await this.createOrReplaceView(columns, datasetSource);
|
|
158
159
|
}
|
|
159
|
-
async createOrReplaceView(columns
|
|
160
|
+
async createOrReplaceView(columns, datasetSource) {
|
|
160
161
|
const readFunctionMap = {
|
|
161
162
|
csv: 'read_csv_auto',
|
|
162
163
|
json: 'read_json_auto',
|
|
@@ -170,13 +171,10 @@ class Dataset {
|
|
|
170
171
|
datetime: 'TIMESTAMP',
|
|
171
172
|
timestamp: 'TIMESTAMP'
|
|
172
173
|
};
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
const readFunction = readFunctionMap[dataSource.type];
|
|
178
|
-
if (!readFunction) throw new Error(`Unsupported dataSource type: ${dataSource.type}`);
|
|
179
|
-
await this.duckDB.writeFile(this._datasetId, dataSource.blob);
|
|
174
|
+
if (datasetSource) {
|
|
175
|
+
const readFunction = readFunctionMap[datasetSource.type];
|
|
176
|
+
if (!readFunction) throw new Error(`Unsupported dataSource type: ${datasetSource.type}`);
|
|
177
|
+
await this.duckDB.writeFile(this._datasetId, datasetSource.blob);
|
|
180
178
|
const columnsStruct = `{${columns.map((c)=>`'${c.name}': '${dataTypeMap[c.type] || 'VARCHAR'}'`).join(', ')}}`;
|
|
181
179
|
const columnNames = columns.map((c)=>`"${c.name}"`).join(', ');
|
|
182
180
|
const createViewSql = `CREATE OR REPLACE VIEW "${this._datasetId}" AS SELECT ${columnNames} FROM ${readFunction}('${this._datasetId}', columns=${columnsStruct})`;
|
|
@@ -500,11 +498,12 @@ class VQuery {
|
|
|
500
498
|
await this.checkDatasetExists(datasetId);
|
|
501
499
|
await this.indexedDB.deleteDataset(datasetId);
|
|
502
500
|
}
|
|
503
|
-
async connectDataset(datasetId, temporaryColumns
|
|
501
|
+
async connectDataset(datasetId, temporaryColumns, temporaryRawDatasetSource) {
|
|
504
502
|
await this.checkInitialized();
|
|
505
503
|
await this.checkDatasetExists(datasetId);
|
|
506
504
|
const dataset = new Dataset(this.duckDB, this.indexedDB, datasetId);
|
|
507
|
-
await
|
|
505
|
+
const temporaryDatasetSource = temporaryRawDatasetSource ? await DatasetSourceBuilder.from(temporaryRawDatasetSource).build() : void 0;
|
|
506
|
+
await dataset.init(temporaryColumns, temporaryDatasetSource);
|
|
508
507
|
return dataset;
|
|
509
508
|
}
|
|
510
509
|
async hasDataset(datasetId) {
|
package/dist/vquery.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ export declare class VQuery {
|
|
|
10
10
|
createDataset(datasetId: string, columns?: DatasetColumn[], rawDatasetSource?: RawDatasetSource): Promise<void>;
|
|
11
11
|
updateDatasetSource(datasetId: string, columns?: DatasetColumn[], rawDatasetSource?: RawDatasetSource): Promise<void>;
|
|
12
12
|
dropDataset(datasetId: string): Promise<void>;
|
|
13
|
-
connectDataset(datasetId: string, temporaryColumns?: DatasetColumn[]): Promise<Dataset>;
|
|
13
|
+
connectDataset(datasetId: string, temporaryColumns?: DatasetColumn[], temporaryRawDatasetSource?: RawDatasetSource): Promise<Dataset>;
|
|
14
14
|
hasDataset(datasetId: string): Promise<boolean>;
|
|
15
15
|
listDatasets(): Promise<{
|
|
16
16
|
datasetId: string;
|