62 lines
1.7 KiB
JavaScript
62 lines
1.7 KiB
JavaScript
import { EntityManager } from '@mikro-orm/core';
|
|
import { MikroKyselyPlugin } from './plugin/index.js';
|
|
/**
|
|
* @inheritDoc
|
|
*/
|
|
export class SqlEntityManager extends EntityManager {
|
|
/**
|
|
* Creates a QueryBuilder instance
|
|
*/
|
|
createQueryBuilder(entityName, alias, type, loggerContext) {
|
|
const context = this.getContext(false);
|
|
return this.driver.createQueryBuilder(
|
|
entityName,
|
|
context.getTransactionContext(),
|
|
type,
|
|
true,
|
|
loggerContext ?? context.loggerContext,
|
|
alias,
|
|
this,
|
|
);
|
|
}
|
|
/**
|
|
* Shortcut for `createQueryBuilder()`
|
|
*/
|
|
qb(entityName, alias, type, loggerContext) {
|
|
return this.createQueryBuilder(entityName, alias, type, loggerContext);
|
|
}
|
|
/**
|
|
* Returns configured Kysely instance.
|
|
*/
|
|
getKysely(options = {}) {
|
|
let kysely = this.getConnection(options.type).getClient();
|
|
if (
|
|
options.columnNamingStrategy != null ||
|
|
options.tableNamingStrategy != null ||
|
|
options.processOnCreateHooks != null ||
|
|
options.processOnUpdateHooks != null ||
|
|
options.convertValues != null
|
|
) {
|
|
kysely = kysely.withPlugin(new MikroKyselyPlugin(this, options));
|
|
}
|
|
return kysely;
|
|
}
|
|
/** Executes a raw SQL query, using the current transaction context if available. */
|
|
async execute(query, params = [], method = 'all', loggerContext) {
|
|
return this.getDriver().execute(
|
|
query,
|
|
params,
|
|
method,
|
|
this.getContext(false).getTransactionContext(),
|
|
loggerContext,
|
|
);
|
|
}
|
|
getRepository(entityName) {
|
|
return super.getRepository(entityName);
|
|
}
|
|
applyDiscriminatorCondition(entityName, where) {
|
|
// this is handled in QueryBuilder now for SQL drivers
|
|
return where;
|
|
}
|
|
}
|