import IConnection from './IConnection'; import IQueryBuilder from './IQueryBuilder'; import { IWhere, IWhereConfig } from './IQueryBuilder'; import Drivers from '../modules/enums/Drivers'; export interface IOptions { driver: (Drivers | string); host: string; port?: string | number; username?: string; password?: string; database: string; } export default abstract class Connection implements IConnection, IQueryBuilder { protected _connection: any; protected _table: string; protected query: {}; protected queryInsert: {}; protected queryUpdate: {}; protected queryDelete: {}; protected _options: IOptions; protected constructor(options: IOptions); get options(): (IOptions); set options(options: IOptions); clearConnection(): void; abstract connect(): boolean; abstract disconnect(): boolean; getConnection(): this; abstract isConnected(): boolean; abstract restartConnection(): void; abstract parseResultQuery(result: any): any[]; abstract table(tableName: string): IQueryBuilder; abstract get(): Promise; abstract first(): Promise>; abstract select(...args: string[]): IQueryBuilder; abstract distinct(status: boolean): IQueryBuilder; abstract whereConfig(config: IWhereConfig): IQueryBuilder; abstract where(...args: IWhere[]): IQueryBuilder; abstract whereSimple(wheres: Record): IQueryBuilder; abstract returning(...args: string[]): IQueryBuilder; abstract with(name: string, query: string, recursive?: boolean): IQueryBuilder; abstract groupBy(...args: string[]): IQueryBuilder; abstract orderBy(...args: string[]): IQueryBuilder; abstract offset(count: number): IQueryBuilder; abstract limit(count: number): IQueryBuilder; abstract skip(count: number): IQueryBuilder; abstract take(count: number): IQueryBuilder; abstract join(table: string, key: string, operation: string, value: string, type?: string): IQueryBuilder; abstract innerJoin(table: string, key: string, operation: string, value: string): IQueryBuilder; abstract leftJoin(table: string, key: string, operation: string, value: string): IQueryBuilder; abstract rightJoin(table: string, key: string, operation: string, value: string): IQueryBuilder; abstract fullJoin(table: string, key: string, operation: string, value: string): IQueryBuilder; abstract insert(items: Record, options?: Record): Promise; abstract update(items: Record): Promise; abstract delete(): Promise; abstract getQuery(): string; abstract raw(query: string): any; logger(): void; }