import { DbContext } from "../../DbContext"; import { Type, UnwrappedType } from "@simplysm/sd-core-common"; import { IDeleteQueryDef, IInsertIfNotExistsQueryDef, IInsertQueryDef, IQueryTableNameDef, ISelectQueryDef, IUpdateQueryDef, IUpsertQueryDef, TQueryBuilderValue } from "../query-builder/types"; import { ITableDef, TQueryValue } from "../../types"; import { IQueryableDef, TEntity, TEntityUnwrap, TEntityValue, TEntityValueOrQueryableOrArray, TIncludeEntity, TInsertObject, TSelectEntity, TUpdateObject } from "./types"; export declare class Queryable { readonly db: D; T?: T; tableType?: Type; tableDef?: ITableDef; private readonly _as?; private readonly _entity; private _isCustomEntity; private readonly _def; constructor(db: D, cloneQueryable: Queryable); constructor(db: D, cloneQueryable: Queryable, entity: TEntity); constructor(db: D, tableType: Type, as?: string); constructor(db: D, tableType: Type | undefined, as: string | undefined, entity: TEntity, defs: IQueryableDef); get tableName(): string; get tableDescription(): string; get tableNameDef(): IQueryTableNameDef; static union(qrs: Queryable[], as?: string): Queryable; lock(): Queryable; select>(fwd: (entity: TEntity) => A): Queryable; select(fwd: (entity: TEntity) => TSelectEntity): Queryable; selectByType(tableType: Type): Queryable; ofType(): Queryable; where(predicate: (entity: TEntity) => TEntityValueOrQueryableOrArray[]): Queryable; distinct(): Queryable; top(count: number): Queryable; orderBy(arg1: ((entity: TEntity) => TEntityValue) | string, desc?: boolean): Queryable; clearOrderBy(): Queryable; limit(skip: number, take: number): Queryable; sample(rowCount: number): Queryable; pivot(valueFwd: (entity: TEntity) => TEntityValue, valueDupFwd: (value: TEntityValue) => TEntityValue, emptyValue: V, pivotFwd: (entity: TEntity) => TEntityValue, pivotKeys: P[]): Queryable>; unpivot(valueColumn: VC, pivotColumn: PC, pivotKeys: string[], _resultType: Type): Queryable & Record | undefined>>; groupBy(fwd: (entity: TEntity) => TEntityValue[]): Queryable; having(predicate: (entity: TEntity) => TEntityValueOrQueryableOrArray[]): Queryable; join(joinTypeOrQrs: Type | Queryable[], as: A, fwd: (qr: Queryable, en: TEntity) => Queryable): Queryable & { [K in A]: R[]; }>; joinSingle(joinTypeOrQrs: Type | Queryable[], as: A, fwd: (qr: Queryable, en: TEntity) => Queryable): Queryable; includeByTableChainedName(tableChainedName: string): Queryable; include(arg: (entity: TIncludeEntity) => TIncludeEntity | TIncludeEntity[]): Queryable; search(fwd: (entity: TEntity) => TEntityValue[], searchText: string): Queryable; wrap(): Queryable; wrap>(tableType: Type): Queryable; getSelectQueryDef(): ISelectQueryDef & { select: Record; }; getInsertQueryDef(obj: TInsertObject, outputColumns: (keyof T)[] | undefined): IInsertQueryDef; getUpdateQueryDef(obj: TUpdateObject, outputColumns: (keyof T)[] | undefined): IUpdateQueryDef; getInsertIfNotExistsQueryDef(insertObj: TInsertObject, outputColumns: (keyof T)[] | undefined): IInsertIfNotExistsQueryDef; getUpsertQueryDef>(updateObj: U, insertObj: TInsertObject | undefined, outputColumns: (keyof T)[] | undefined, aiKeyName: string | undefined, pkColNames: string[]): IUpsertQueryDef; getDeleteQueryDef(outputColumns: (keyof T)[] | undefined): IDeleteQueryDef; insertIntoAsync(tableType: Type, stopAutoIdentity?: boolean): Promise; resultAsync(): Promise; singleAsync(): Promise; countAsync(): Promise; countAsync(fwd: (entity: TEntity) => TEntityValue): Promise; existsAsync(): Promise; bulkInsertAsync(records: TInsertObject[]): Promise; bulkUpsertAsync(records: TInsertObject[]): Promise; insertAsync(records: TInsertObject[]): Promise; insertAsync(records: TInsertObject[], outputColumns: OK[]): Promise<{ [K in OK]: T[K]; }[]>; insertWithoutFkCheckAsync(records: TInsertObject[]): Promise; insertWithoutFkCheckAsync(records: TInsertObject[], outputColumns: OK[]): Promise<{ [K in OK]: T[K]; }[]>; insertPrepare(records: TInsertObject[]): void; insertWithoutFkCheckPrepare(records: TInsertObject[]): void; updateAsync(recordFwd: (entity: TEntity) => TUpdateObject | Promise>): Promise; updateAsync(recordFwd: (entity: TEntity) => TUpdateObject | Promise>, outputColumns: OK[]): Promise<{ [K in OK]: T[K]; }[]>; updatePrepare(recordFwd: (entity: TEntity) => TUpdateObject): void; deleteAsync(): Promise; deleteAsync(outputColumns: OK[]): Promise<{ [K in OK]: T[K]; }[]>; deletePrepare(): void; upsertAsync(inAndUpsertFwd: (entity: TEntity) => TInsertObject | Promise>): Promise; upsertAsync(inAndUpsertFwd: (entity: TEntity) => TInsertObject | Promise>, outputColumns: OK[]): Promise<{ [K in OK]: T[K]; }[]>; upsertAsync>(updateFwd: (entity: TEntity) => U | Promise, insertFwd: (updateRecord: U) => TInsertObject | Promise>): Promise; upsertAsync, OK extends keyof T>(updateFwd: (entity: TEntity) => U | Promise, insertFwd: (updateRecord: U) => TInsertObject | Promise>, outputColumns: OK[]): Promise<{ [K in OK]: T[K]; }[]>; upsertPrepare>(updateObjOrFwd: U | ((entity: TEntity) => U), insertObjOrFwd?: TInsertObject | ((updateRecord: U) => TInsertObject)): void; configIdentityInsert(state: "on" | "off"): void; private _include; private _getParentEntity; private _insertAsync; private _insertPrepare; private _getInsertDefs; private _getUpdateDefs; private _getDeleteDefs; private _getUpsertDefs; private _getParseOption; private _setEntityChainValue; private _getEntityChainValue; }