/// import internal from "stream"; import { Knex } from "knex"; import { TransactionScope } from "./Model.connection"; import { EntityColumnOptions } from "./Model.entity"; import { EntityRelationColumnOptions } from "./Model.entity.relation"; import { CountOptions, DeleteOptions, FindOneOptions, FindOptions, InsertId, Paginatable, PaginationOptions, StreamFunctions, UpdateBulkOptions, UpdateOptions, UpsertOptions } from "./Model.query"; import { ClassType } from "../types"; interface RelationalRepositoryInfo { options: EntityRelationColumnOptions; repository: RepositoryInfo; } export interface RepositoryInfo { target: ClassType; tableName: string; columns: Array; fields: { [key: string | symbol]: EntityColumnOptions; }; primaryColumns: Array; criteriaColumns: Array; oneToOneRelationColumns: Array; oneToOneRelations: { [key: string | symbol]: RelationalRepositoryInfo; }; } export declare const symRepositoryInfo: unique symbol; interface HasSymRepositoryInfo { [symRepositoryInfo]?: RepositoryInfo; } export declare class Repository> { private readonly repositoryInfo; private readonly kx; constructor(scopeOrKnex: TransactionScope | Knex, entity: ClassType); static getRepositoryInfo(entity: ClassType & HasSymRepositoryInfo): RepositoryInfo; save(entity: T, trx?: TransactionScope): Promise; saveBulk(entities: Array, trx?: TransactionScope): Promise; update(entity: T, options?: UpdateOptions, trx?: TransactionScope): Promise; updateBulk(entities: Array, options: UpdateBulkOptions, trx?: TransactionScope): Promise; upsert(entity: T, options: UpsertOptions, trx?: TransactionScope): Promise; delete(entity: T, options?: DeleteOptions, trx?: TransactionScope): Promise; findOne(options?: FindOneOptions, trx?: TransactionScope): Promise; find(options?: FindOptions, trx?: TransactionScope): Promise; pagination(options?: PaginationOptions, trx?: TransactionScope): Promise>; streaming(options: FindOptions, trx?: TransactionScope): internal.PassThrough & AsyncIterable; streamAsync(options: FindOptions, streamFn: StreamFunctions, trx?: TransactionScope): Promise; private prepareQuery; private select; count(options: CountOptions, trx?: TransactionScope): Promise; private joinWith; private join; private where; private order; private mapping; } export {};