import { MetaType } from '../metaTypeCreator'; import { ErrorWhereOrderByEquality } from '../error'; import { QueryConstraints, WhereConstraint, OrderByConstraint } from '../queryConstraints'; import { GetAllWhereConstraint } from './where'; import { In, Equal } from './utils'; export type ValidateOrderByEqualityWhere, AllQCs extends QueryConstraints[]> = Extract, WhereConstraint> extends never ? true : false; export type OrderByConstraintLimitation, AllQCs extends QueryConstraints[]> = ValidateOrderByEqualityWhere extends false ? ErrorWhereOrderByEquality : U; export type GetFirstOrderBy = QCs extends [infer H, ...infer Rest] ? H extends OrderByConstraint ? H : Rest extends QueryConstraints[] ? GetFirstOrderBy : never : true; export type GetAllOrderBy[]> = QCs extends [infer H, ...infer Rest] ? Rest extends QueryConstraints[] ? GetAllOrderBy ? [...AllOrderBy, H] : AllOrderBy> : [] : AllOrderBy;