///
///
///
///
///
///
///
///
///
///
import { Macroable } from 'macroable';
import { EmitterContract } from '@ioc:Adonis/Core/Event';
import { LoggerContract } from '@ioc:Adonis/Core/Logger';
import { ProfilerContract } from '@ioc:Adonis/Core/Profiler';
import { DatabaseConfig, IsolationLevels, DatabaseContract, QueryClientContract, DatabaseClientOptions, TransactionClientContract, ConnectionManagerContract } from '@ioc:Adonis/Lucid/Database';
import { RawBuilder } from './StaticBuilder/Raw';
import { prettyPrint } from '../Helpers/prettyPrint';
import { ModelQueryBuilder } from '../Orm/QueryBuilder';
import { InsertQueryBuilder } from './QueryBuilder/Insert';
import { ReferenceBuilder } from './StaticBuilder/Reference';
import { SimplePaginator } from './Paginator/SimplePaginator';
import { DatabaseQueryBuilder } from './QueryBuilder/Database';
/**
* Database class exposes the API to manage multiple connections and obtain an instance
* of query/transaction clients.
*/
export declare class Database extends Macroable implements DatabaseContract {
private config;
private logger;
private profiler;
private emitter;
/**
* Required by macroable
*/
protected static macros: {};
protected static getters: {};
/**
* Reference to self constructor. TypeScript sucks with "this.constructor"
* https://github.com/microsoft/TypeScript/issues/4586
*/
Database: typeof Database;
/**
* Reference to connections manager
*/
manager: ConnectionManagerContract;
/**
* Primary connection name
*/
primaryConnectionName: string;
/**
* Reference to query builders. We expose them, so that they can be
* extended from outside using macros.
*/
DatabaseQueryBuilder: typeof DatabaseQueryBuilder;
InsertQueryBuilder: typeof InsertQueryBuilder;
ModelQueryBuilder: typeof ModelQueryBuilder;
SimplePaginator: typeof SimplePaginator;
/**
* A store of global transactions
*/
connectionGlobalTransactions: Map;
hasHealthChecksEnabled: boolean;
prettyPrint: typeof prettyPrint;
constructor(config: DatabaseConfig, logger: LoggerContract, profiler: ProfilerContract, emitter: EmitterContract);
/**
* Validate config at runtime
*/
private validateConfig;
/**
* Compute whether health check is enabled or not after registering the connections.
* There are chances that all pre-registered connections are not using health
* checks but a dynamic connection is using it. We don't support that use case
* for now, since it complicates things a lot and forces us to register the
* health checker on demand.
*/
private findIfHealthChecksAreEnabled;
/**
* Registering all connections with the manager, so that we can fetch
* and connect with them whenver required.
*/
private registerConnections;
/**
* Returns the connection node from the connection manager
*/
getRawConnection(name: string): import("@ioc:Adonis/Lucid/Database").ConnectionNode | undefined;
/**
* Returns the query client for a given connection
*/
connection(connection?: string, options?: DatabaseClientOptions): QueryClientContract | TransactionClientContract;
/**
* Returns the knex query builder
*/
knexQuery(): import("knex").Knex.QueryBuilder;
/**
* Returns the knex raw query builder
*/
knexRawQuery(sql: string, bindings?: any[]): import("knex").Knex.Raw;
/**
* Returns query builder. Optionally one can define the mode as well
*/
query(options?: DatabaseClientOptions): import("@ioc:Adonis/Lucid/Database").DatabaseQueryBuilderContract;
/**
* Returns insert query builder. Always has to be dual or write mode and
* hence it doesn't matter, since in both `dual` and `write` mode,
* the `write` connection is always used.
*/
insertQuery(options?: DatabaseClientOptions): import("@ioc:Adonis/Lucid/Database").InsertQueryBuilderContract;
/**
* Returns a query builder instance for a given model.
*/
modelQuery(model: any, options?: DatabaseClientOptions): import("@ioc:Adonis/Lucid/Orm").ModelQueryBuilderContract;
/**
* Returns an instance of raw query builder. Optionally one can
* defined the `read/write` mode in which to execute the
* query
*/
rawQuery(sql: string, bindings?: any, options?: DatabaseClientOptions): import("@ioc:Adonis/Lucid/Database").RawQueryBuilderContract;
/**
* Returns an instance of raw builder. This raw builder queries
* cannot be executed. Use `rawQuery`, if you want to execute
* queries raw queries.
*/
raw(sql: string, bindings?: any): RawBuilder;
/**
* Returns reference builder.
*/
ref(reference: string): ReferenceBuilder;
/**
* Returns instance of a query builder and selects the table
*/
from(table: any): import("@ioc:Adonis/Lucid/Database").DatabaseQueryBuilderContract;
/**
* Returns insert query builder and selects the table
*/
table(table: any): import("@ioc:Adonis/Lucid/Database").InsertQueryBuilderContract;
/**
* Returns a transaction instance on the default
* connection
*/
transaction(callback?: {
isolationLevel?: IsolationLevels;
} | ((trx: TransactionClientContract) => Promise), options?: {
isolationLevel?: IsolationLevels;
}): Promise;
/**
* Invokes `manager.report`
*/
report(): Promise;
/**
* Begin a new global transaction
*/
beginGlobalTransaction(connectionName?: string, options?: Omit): Promise;
/**
* Commit an existing global transaction
*/
commitGlobalTransaction(connectionName?: string): Promise;
/**
* Rollback an existing global transaction
*/
rollbackGlobalTransaction(connectionName?: string): Promise;
}