UNPKG

argosjs

Version:

Ethereum smart-contract events visualiser

69 lines (68 loc) 2 kB
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 { [alias: string]: 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 };