UNPKG

@riao/dbal

Version:
85 lines (84 loc) 2.92 kB
import { Repository, RepositoryOptions, RepositoryInit } from '../repository'; import { DatabaseRecord } from '../record'; import { DatabaseQueryBuilder, DeleteOptions, InsertOneOptions, InsertOptions, SelectQuery, UpdateOptions } from '../dml'; import { Schema } from '../schema'; import { CountParams } from '../functions/signatures/count'; import { SetOptions } from './set-options'; export interface QueryRepositoryOptions extends RepositoryOptions { table?: string; identifiedBy?: string; queryBuilderType: typeof DatabaseQueryBuilder; } export interface QueryRepositoryInit extends RepositoryInit { schema?: Schema; } /** * Use the Query Repository to query a database */ export declare class QueryRepository<T extends DatabaseRecord = DatabaseRecord> extends Repository { protected schema?: Schema; protected table?: string; protected identifiedBy?: string; protected queryBuilderType: typeof DatabaseQueryBuilder; constructor(options: QueryRepositoryOptions); init(options: QueryRepositoryInit): void; getTableName(): null | string; getIdentifier(): null | string; getQueryBuilder(): DatabaseQueryBuilder; /** * Finds entities matching given criteria * * @param selectQuery Select query * @returns Found entities */ find(selectQuery: SelectQuery<T>): Promise<T[]>; /** * Finds one entity matching given criteria * * @param selectQuery Select query * @returns Found entity or `null` */ findOne(selectQuery: SelectQuery<T>): Promise<null | T>; findById(id: number | string): Promise<null | T>; /** * Finds one entity matching given criteria, or throws error * * @param selectQuery Select query * @param error Error to throw * @returns Found entity */ findOneOrFail(selectQuery: SelectQuery<T>, error?: Error): Promise<T>; count(selectQuery?: SelectQuery<T>, params?: CountParams): Promise<number>; /** * Insert one or multiple items into the database * * @param insertOptions Insert options * @returns Inserted item(s) */ insert(insertOptions: InsertOptions<T>): Promise<void>; /** * Insert one item into the database * * @param insertOptions Insert options * @returns Inserted item */ insertOne(insertOptions: InsertOneOptions<T>): Promise<Partial<T>>; /** * Update items in the database * * @param updateOptions Update options */ update(updateOptions: UpdateOptions<T>): Promise<void>; /** * Set a variable * * @param setOptions */ set(setOptions: SetOptions): Promise<void>; /** * Delete items from the database * * @param deleteOptions Delete options */ delete(deleteOptions: DeleteOptions<T>): Promise<void>; }