Skip to content

Commit

Permalink
feat: add dataset store
Browse files Browse the repository at this point in the history
  • Loading branch information
csgui committed Jul 6, 2023
1 parent 30eb324 commit ec8d892
Showing 1 changed file with 58 additions and 0 deletions.
58 changes: 58 additions & 0 deletions src/event-replay/parquet-based/dataset/store.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
import { Database, QueryResult } from "duckdb";

export class DatasetStore {

private readonly db;

constructor() {
this.db = new Database(':memory:');
};

static async connect(): Promise<DatasetStore> {
return new DatasetStore();
};

newBlockEventsIds = () => {
var con = this.db.connect();
return new Promise((resolve) => {
con.all(
"SELECT ID FROM READ_PARQUET('events/new_block/canonical/*.parquet')",
(err: any, result: any) => {
if (err) {
throw err;
}

let res = result.map((a: any) => a.id); // extract IDs as an Array
resolve(res);
}
);
});
};

newBlockEventsOrderedPayloadStream = (): Promise<QueryResult> => {
return new Promise(async (resolve) => {
var con = this.db.connect();
const res = con.stream(
"SELECT payload FROM READ_PARQUET('events/new_block/canonical/*.parquet') ORDER BY id",
);

resolve(res);
});
};

newBurnBlockEventsOrdered = () => {
return new Promise((resolve) => {
var con = this.db.connect();
con.all(
"SELECT * FROM READ_PARQUET('events/new_burn_block/canonical/*.parquet') ORDER BY id",
(err: any, result: any) => {
if (err) {
throw err;
}

resolve(result);
}
);
});
};
};

0 comments on commit ec8d892

Please sign in to comment.