44 lines
1.7 KiB
TypeScript
44 lines
1.7 KiB
TypeScript
import {
|
|
type EntityKey,
|
|
type EntityProperty,
|
|
type MetadataStorage,
|
|
type RawQueryFragmentSymbol,
|
|
type EntityName,
|
|
} from '@mikro-orm/core';
|
|
import type { ICriteriaNode, ICriteriaNodeProcessOptions, IQueryBuilder } from '../typings.js';
|
|
/**
|
|
* Helper for working with deeply nested where/orderBy/having criteria. Uses composite pattern to build tree from the payload.
|
|
* Auto-joins relations and converts payload from { books: { publisher: { name: '...' } } } to { 'publisher_alias.name': '...' }
|
|
* @internal
|
|
*/
|
|
export declare class CriteriaNode<T extends object> implements ICriteriaNode<T> {
|
|
protected readonly metadata: MetadataStorage;
|
|
readonly entityName: EntityName<T>;
|
|
readonly parent?: ICriteriaNode<T> | undefined;
|
|
readonly key?: (EntityKey<T> | RawQueryFragmentSymbol) | undefined;
|
|
readonly validate: boolean;
|
|
readonly strict: boolean;
|
|
payload: any;
|
|
prop?: EntityProperty<T>;
|
|
index?: number;
|
|
constructor(
|
|
metadata: MetadataStorage,
|
|
entityName: EntityName<T>,
|
|
parent?: ICriteriaNode<T> | undefined,
|
|
key?: (EntityKey<T> | RawQueryFragmentSymbol) | undefined,
|
|
validate?: boolean,
|
|
strict?: boolean,
|
|
);
|
|
process(qb: IQueryBuilder<T>, options?: ICriteriaNodeProcessOptions): any;
|
|
unwrap(): any;
|
|
shouldInline(payload: any): boolean;
|
|
willAutoJoin(qb: IQueryBuilder<T>, alias?: string, options?: ICriteriaNodeProcessOptions): boolean;
|
|
shouldRename(payload: any): boolean;
|
|
renameFieldToPK<T>(qb: IQueryBuilder<T>, ownerAlias?: string): string;
|
|
getPath(opts?: { addIndex?: boolean; parentPath?: string }): string;
|
|
private isPivotJoin;
|
|
getPivotPath(path: string): string;
|
|
aliased(field: string, alias?: string): string;
|
|
isStrict(): boolean;
|
|
}
|