Files
evento/node_modules/@mikro-orm/sql/SqlEntityManager.d.ts
2026-03-18 14:55:56 -03:00

83 lines
3.0 KiB
TypeScript

import {
type EntitySchemaWithMeta,
EntityManager,
type AnyEntity,
type ConnectionType,
type EntityData,
type EntityName,
type EntityRepository,
type GetRepository,
type QueryResult,
type FilterQuery,
type LoggingOptions,
type RawQueryFragment,
} from '@mikro-orm/core';
import type { AbstractSqlDriver } from './AbstractSqlDriver.js';
import type { NativeQueryBuilder } from './query/NativeQueryBuilder.js';
import type { QueryBuilder } from './query/QueryBuilder.js';
import type { SqlEntityRepository } from './SqlEntityRepository.js';
import type { Kysely } from 'kysely';
import type { InferClassEntityDB, InferKyselyDB } from './typings.js';
import { type MikroKyselyPluginOptions } from './plugin/index.js';
/** Options for `SqlEntityManager.getKysely()`. */
export interface GetKyselyOptions extends MikroKyselyPluginOptions {
/** Connection type to use (`'read'` or `'write'`). */
type?: ConnectionType;
}
/**
* @inheritDoc
*/
export declare class SqlEntityManager<
Driver extends AbstractSqlDriver = AbstractSqlDriver,
> extends EntityManager<Driver> {
/**
* Creates a QueryBuilder instance
*/
createQueryBuilder<Entity extends object, RootAlias extends string = never>(
entityName: EntityName<Entity> | QueryBuilder<Entity>,
alias?: RootAlias,
type?: ConnectionType,
loggerContext?: LoggingOptions,
): QueryBuilder<Entity, RootAlias>;
/**
* Shortcut for `createQueryBuilder()`
*/
qb<Entity extends object, RootAlias extends string = never>(
entityName: EntityName<Entity>,
alias?: RootAlias,
type?: ConnectionType,
loggerContext?: LoggingOptions,
): QueryBuilder<Entity, RootAlias>;
/**
* Returns configured Kysely instance.
*/
getKysely<TDB = undefined, TOptions extends GetKyselyOptions = GetKyselyOptions>(
options?: TOptions,
): Kysely<
TDB extends undefined
? InferKyselyDB<EntitiesFromManager<this>, TOptions> & InferClassEntityDB<AllEntitiesFromManager<this>, TOptions>
: TDB
>;
/** Executes a raw SQL query, using the current transaction context if available. */
execute<T extends QueryResult | EntityData<AnyEntity> | EntityData<AnyEntity>[] = EntityData<AnyEntity>[]>(
query: string | NativeQueryBuilder | RawQueryFragment,
params?: any[],
method?: 'all' | 'get' | 'run',
loggerContext?: LoggingOptions,
): Promise<T>;
getRepository<T extends object, U extends EntityRepository<T> = SqlEntityRepository<T>>(
entityName: EntityName<T>,
): GetRepository<T, U>;
protected applyDiscriminatorCondition<Entity extends object>(
entityName: EntityName<Entity>,
where: FilterQuery<Entity>,
): FilterQuery<Entity>;
}
type EntitiesFromManager<TEntityManager extends EntityManager<any>> =
NonNullable<TEntityManager['~entities']> extends any[]
? Extract<NonNullable<TEntityManager['~entities']>[number], EntitySchemaWithMeta>
: never;
type AllEntitiesFromManager<TEntityManager extends EntityManager<any>> =
NonNullable<TEntityManager['~entities']> extends any[] ? NonNullable<TEntityManager['~entities']>[number] : never;
export {};