argosjs
Version:
Ethereum smart-contract events visualiser
69 lines (68 loc) • 2 kB
TypeScript
import * as Neode from "neode";
import { DatabaseModels, EventInfoDataStruct } from "../index";
import { PersistenceStrategies } from "../utils/strategy";
import { QueryData } from "../utils/types";
export interface DatabaseConstructor {
username: string;
password: string;
model: DatabaseModels;
}
export interface DatabaseModels {
[]: Neode.SchemaObject;
}
export default abstract class Database {
/**
* Create a Database
*/
constructor();
/**
* Connect to the database
*/
abstract dbConnect(): void;
/**
* Reconnect to the database
*/
abstract dbReconnect(): void;
/**
* Close connection to the database
*/
abstract dbTerminate(): void;
/**
* Load a model
* @param {DatabaseModels} model loaded model using require()
*/
abstract dbCreateModel(model: DatabaseModels): void;
/**
* Delete all entry in the database
*/
abstract dbClearAll(): Promise<void>;
/**
* Tell the database to execute a query
* @param {QueryData} query where parameters
* @returns {Promise<any>} the result of queries
*/
abstract executeQuery(query: QueryData): Promise<any>;
/**
* Tell the database to execute a query
* @param {string} queries a string query
* @returns {Promise<any>} the result of queries
*/
abstract executeQueries(queries: QueryData[]): Promise<any>;
abstract exportCSV(fileName: string): Promise<any>;
abstract importCSV(fileName: string): Promise<any>;
/**
* Prepare queries and batch-persist them to DB
* @param eidss the extracted data
* @param PS the persistence strategy
*/
abstract persistDataToDB(eidss: EventInfoDataStruct[], PS: PersistenceStrategies): Promise<void>;
/**
* Get all nodes' type
*/
abstract getNodeTypes(): string[];
/**
* Get all relationships' type
*/
abstract getRelTypes(): string[];
}
export { Database };