import "../Extensions/ArrayItemTypeExtension"; import { IObjectType, GenericType, DbType, IsolationLevel, DeleteMode, FlatObjectLike } from "../Common/Type"; import { DbSet } from "./DbSet"; import { IQueryResultParser } from "../Query/IQueryResultParser"; import { IQueryCacheManager } from "../Cache/IQueryCacheManager"; import { IQueryResult } from "../Query/IQueryResult"; import { IDBEventListener } from "./Event/IDBEventListener"; import { IDriver } from "../Connection/IDriver"; import { IQuery } from "../Query/IQuery"; import { EntityEntry } from "./EntityEntry"; import { DeferredQuery } from "../Query/DeferredQuery"; import { RelationEntry } from "./RelationEntry"; import { IRelationMetaData } from "../MetaData/Interface/IRelationMetaData"; import { EmbeddedEntityEntry } from "./EmbeddedEntityEntry"; import { IConnectionManager } from "../Connection/IConnectionManager"; import { IConnection } from "../Connection/IConnection"; import { IEntityMetaData } from "../MetaData/Interface/IEntityMetaData"; import { IDeleteEventParam } from "../MetaData/Interface/IDeleteEventParam"; import { ISaveEventParam } from "../MetaData/Interface/ISaveEventParam"; import { IQueryExpression } from "../Queryable/QueryExpression/IQueryExpression"; import { NamingStrategy } from "../Query/NamingStrategy"; import { QueryTranslator } from "../Query/QueryTranslator"; import { IResultCacheManager } from "../Cache/IResultCacheManager"; import { IQueryBuilder } from "../Query/IQueryBuilder"; import { ISchemaBuilder } from "../Query/ISchemaBuilder"; import { IQueryVisitor } from "../Query/IQueryVisitor"; import { IQueryOption } from "../Query/IQueryOption"; import { IEnumerable } from "../Enumerable/IEnumerable"; export declare type IChangeEntryMap = { [K in T]: Map; }; export declare abstract class DbContext implements IDBEventListener { abstract readonly entityTypes: Array>; protected abstract readonly queryBuilderType: IObjectType; protected abstract readonly queryVisitorType: IObjectType; protected abstract readonly schemaBuilderType: IObjectType; protected abstract readonly queryResultParserType: IObjectType; protected abstract readonly namingStrategy: NamingStrategy; protected abstract readonly translator: QueryTranslator; abstract readonly dbType: T; protected readonly queryCacheManagerFactory?: () => IQueryCacheManager; protected readonly resultCacheManagerFactory?: () => IResultCacheManager; readonly queryBuilder: IQueryBuilder; readonly queryVisitor: IQueryVisitor; getQueryResultParser(command: IQueryExpression, queryBuilder: IQueryBuilder): IQueryResultParser; deferredQueries: DeferredQuery[]; private _queryCacheManager; readonly queryCacheManager: IQueryCacheManager; private _resultCacheManager; readonly resultCacheManager: IResultCacheManager; private _connectionManager; readonly connectionManager: IConnectionManager; connection?: IConnection; getConnection(writable?: boolean): Promise; closeConnection(con?: IConnection): Promise; private _cachedDbSets; protected readonly factory: () => IConnectionManager | IDriver; constructor(factory?: () => IConnectionManager | IDriver); set(type: IObjectType, isClearCache?: boolean): DbSet; entry(entity: T): EntityEntry; attach(entity: T, all?: boolean): EntityEntry; add(entity: T): EntityEntry; delete(entity: T): EntityEntry; update(entity: T, originalValues?: FlatObjectLike): EntityEntry; entityEntries: IChangeEntryMap<"add" | "update" | "delete", IEntityMetaData, EntityEntry>; relationEntries: IChangeEntryMap<"add" | "delete", IRelationMetaData, RelationEntry>; modifiedEmbeddedEntries: Map, Array>; clear(): void; relationEntry(entry: EntityEntry, propertyName: string, childEntry: EntityEntry): RelationEntry; executeQueries(...queries: IQuery[]): Promise; transaction(transactionBody: () => Promise): Promise; transaction(isolationLevel: IsolationLevel, transactionBody: () => Promise): Promise; executeDeferred(deferredQueries?: IEnumerable): Promise; syncSchema(): Promise; getUpdateSchemaQueries(entityTypes: IObjectType[]): Promise; deferredFromSql(type: GenericType, rawQuery: string, parameters?: { [key: string]: any; }): Promise>; fromSql(type: GenericType, rawQuery: string, parameters?: { [key: string]: any; }): Promise; beforeSave?: (entity: T, param: ISaveEventParam) => boolean; beforeDelete?: (entity: T, param: IDeleteEventParam) => boolean; afterLoad?: (entity: T) => void; afterSave?: (entity: T, param: ISaveEventParam) => void; afterDelete?: (entity: T, param: IDeleteEventParam) => void; saveChanges(options?: IQueryOption): Promise; protected getUpdateQueries(entityMetaData: IEntityMetaData, entries: IEnumerable>, visitor?: IQueryVisitor, option?: IQueryOption): DeferredQuery[]; protected getDeleteQueries(entityMeta: IEntityMetaData, entries: IEnumerable>, visitor?: IQueryVisitor, deleteMode?: DeleteMode, option?: IQueryOption): DeferredQuery[]; protected getInsertQueries(entityMeta: IEntityMetaData, entries: IEnumerable>, visitor?: IQueryVisitor, option?: IQueryOption): DeferredQuery[]; protected getUpsertQueries(entityMeta: IEntityMetaData, entries: IEnumerable>, visitor?: IQueryVisitor, param?: IQueryOption): DeferredQuery[]; protected getRelationAddQueries(slaveRelationMetaData: IRelationMetaData, relationEntries: IEnumerable>, visitor?: IQueryVisitor, param?: IQueryOption): DeferredQuery[]; protected getRelationDeleteQueries(slaveRelationMetaData: IRelationMetaData, relationEntries: IEnumerable>, visitor?: IQueryVisitor, param?: IQueryOption): DeferredQuery[]; }