@riao/dbal
Version:
85 lines (84 loc) • 2.92 kB
TypeScript
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>;
}