2021-09-29 18:39:32 -05:00
|
|
|
// import { sqlite3, open } from 'sqlite3';
|
2021-09-30 10:56:01 -05:00
|
|
|
// var sqlite3 = require("sqlite3").verbose();
|
|
|
|
// import "sqlite3";
|
|
|
|
import * as sqlite from 'sqlite3';
|
|
|
|
const sqlite3 = sqlite.verbose();
|
2021-09-29 18:39:32 -05:00
|
|
|
import { Response } from './eip_processor';
|
|
|
|
|
|
|
|
|
2021-09-30 14:06:59 -05:00
|
|
|
export interface DBRecord {
|
|
|
|
snapshot_id: number;
|
|
|
|
event_address: string;
|
|
|
|
event_signature: string;
|
|
|
|
eip712_doc: string;
|
|
|
|
peer_id: string;
|
|
|
|
timestamp: number;
|
|
|
|
eip_validation: boolean;
|
|
|
|
ts_validation: boolean;
|
|
|
|
signed_response: string;
|
|
|
|
}
|
2021-09-29 18:39:32 -05:00
|
|
|
|
|
|
|
// db handler
|
2021-09-30 10:56:01 -05:00
|
|
|
export function get_db(db_path: any): sqlite.Database {
|
2021-09-29 18:39:32 -05:00
|
|
|
var db_path = db_path;
|
|
|
|
|
|
|
|
if (db_path === null) {
|
|
|
|
db_path = ':memory';
|
|
|
|
}
|
|
|
|
|
2021-09-29 23:37:01 -05:00
|
|
|
var db = new sqlite3.Database(db_path, (err: any) => {
|
2021-09-29 18:39:32 -05:00
|
|
|
if (err) {
|
|
|
|
return console.error("failure to get sqlite: ", err.message);
|
|
|
|
}
|
|
|
|
});
|
2021-09-30 10:56:01 -05:00
|
|
|
console.dir(db);
|
2021-09-29 18:39:32 -05:00
|
|
|
return db;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2021-09-30 10:56:01 -05:00
|
|
|
export async function create_table(db: sqlite.Database) {
|
2021-09-29 23:37:01 -05:00
|
|
|
const stmt = `create table if not exists snapshot (
|
2021-09-30 10:56:01 -05:00
|
|
|
snapshot_id integer primary key,
|
|
|
|
event_address text,
|
|
|
|
event_signature text,
|
|
|
|
eip712_doc blob,
|
|
|
|
peer_id text,
|
|
|
|
timestamp integer,
|
|
|
|
eip_validation boolean,
|
|
|
|
ts_validation boolean,
|
2021-09-29 18:39:32 -05:00
|
|
|
signed_response text
|
|
|
|
)`;
|
|
|
|
|
2021-09-30 10:56:01 -05:00
|
|
|
let promise = new Promise<void>((resolve, reject) => db.run(stmt, (res: sqlite.RunResult, err: Error) => {
|
|
|
|
console.dir(res);
|
|
|
|
if (err !== null) {
|
|
|
|
resolve()
|
|
|
|
} else {
|
|
|
|
reject(err)
|
|
|
|
}
|
|
|
|
}));
|
|
|
|
|
|
|
|
return promise;
|
|
|
|
|
2021-09-29 18:39:32 -05:00
|
|
|
db.run(stmt);
|
|
|
|
}
|
|
|
|
|
2021-09-30 10:56:01 -05:00
|
|
|
|
|
|
|
export function insert_event(db: any, eip_obj: any, response_obj: Response, signed_msg: string) {
|
2021-09-29 23:37:01 -05:00
|
|
|
const stmt = `insert into snapshot values (?,?,?,?,?,?,?,?,?)`;
|
2021-09-30 10:56:01 -05:00
|
|
|
// const stmt = `insert into snapshot values (?)`;
|
2021-09-29 23:37:01 -05:00
|
|
|
var cursor = db.prepare(stmt);
|
|
|
|
|
2021-09-30 10:56:01 -05:00
|
|
|
var vals = [eip_obj.data.message.snapshot, eip_obj.address, eip_obj.sig, JSON.stringify(eip_obj.data), response_obj.peer_id, response_obj.timestamp, response_obj.eip_validation, response_obj.ts_validation, signed_msg];
|
|
|
|
// var vals = [1];
|
2021-09-29 23:37:01 -05:00
|
|
|
for (let v of vals) {
|
|
|
|
console.log(typeof (v));
|
|
|
|
}
|
|
|
|
|
|
|
|
cursor.run(stmt, vals, function (err: any) {
|
2021-09-29 18:39:32 -05:00
|
|
|
if (err) {
|
2021-09-29 23:37:01 -05:00
|
|
|
return console.log("insert error: ", err.message);
|
2021-09-29 18:39:32 -05:00
|
|
|
}
|
|
|
|
// console.log(`A row has been inserted with row id: ${this.lastID}`);
|
|
|
|
// console.log(`A row has been inserted with row id: ${db.}`);
|
|
|
|
});
|
2021-09-29 23:37:01 -05:00
|
|
|
cursor.finalize();
|
2021-09-29 18:39:32 -05:00
|
|
|
}
|
2021-09-29 23:37:01 -05:00
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
|
|
|
var db = new sqlite3.Database(DB_PATH);
|
|
|
|
db.serialize(function () {
|
|
|
|
const create_stmt = "CREATE TABLE lorem (info TEXT)";
|
|
|
|
db.run(create_stmt);
|
|
|
|
|
|
|
|
const ins_stmt = "INSERT INTO lorem VALUES (?)";
|
|
|
|
var stmt = db.prepare("INSERT INTO lorem VALUES (?)");
|
|
|
|
for (var i = 0; i < 10; i++) {
|
|
|
|
stmt.run("Ipsum " + i);
|
|
|
|
}
|
|
|
|
stmt.finalize();
|
|
|
|
|
|
|
|
db.each("SELECT rowid AS id, info FROM lorem", function (err: any, row: any) {
|
|
|
|
console.log(row.id + ": " + row.info);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
*/
|