@avonjs/avonjs
Version:
A fluent Node.js API generator.
63 lines (62 loc) • 2.69 kB
TypeScript
import { type AbstractMixable, type MatchedQueryHandlers, type Model, TrashedStatus } from '../Contracts';
import type { Filter } from '../Filters';
import type AvonRequest from '../Http/Requests/AvonRequest';
import type { Ordering } from '../Orderings';
import type { Repository } from '../Repositories';
declare const _default: <T extends AbstractMixable = AbstractMixable>(Parent: T) => (abstract new (...args: import("../Contracts").Args) => {
/**
* Search repository for incoming request.
*/
search(request: AvonRequest, filters?: MatchedQueryHandlers<Filter>, orderings?: MatchedQueryHandlers<Ordering>, withTrashed?: TrashedStatus): Promise<Repository<Model>>;
/**
* Initialize the search configuration.
*/
initializeSearch(request: AvonRequest, filters?: MatchedQueryHandlers<Filter>, orderings?: MatchedQueryHandlers<Ordering>): Promise<Repository<Model>>;
/**
* Get query builder.
*/
queryBuilder(request: AvonRequest): Repository<Model>;
/**
* Resolve the resource repository.
*/
resolveRepository(request: AvonRequest): Repository<Model>;
/**
* Apply the soft-delete into given query.
*/
applySoftDeleteConstraint(queryBuilder: Repository<Model>, withTrashed: TrashedStatus): Repository<Model>;
/**
* Apply any applicable filters to the repository.
*/
applyFilters(request: AvonRequest, queryBuilder: Repository<Model>, filters: MatchedQueryHandlers<Filter>): Promise<Repository<Model>>;
/**
* Apply any applicable orders to the repository.
*/
applyOrderings(request: AvonRequest, queryBuilder: Repository<Model>, orderings?: MatchedQueryHandlers<Ordering>): Promise<Repository<Model>>;
/**
* Build a "relatable" query for the given resource.
*
* This query determines which instances of the model may be attached to other resources.
*/
relatableQuery(request: AvonRequest, queryBuilder: Repository<Model>): Repository<Model>;
/**
* Build an "index" query for the given resource.
*/
indexQuery(request: AvonRequest, queryBuilder: Repository<Model>): Repository<Model>;
/**
* Build a "detail" query for the given resource.
*/
detailQuery(request: AvonRequest, queryBuilder: Repository<Model>): Repository<Model>;
/**
* Build a "review" query for the given resource.
*/
reviewQuery(request: AvonRequest, queryBuilder: Repository<Model>): Repository<Model>;
/**
* Determine if this resource uses soft deletes.
*/
softDeletes(): boolean;
/**
* Get the repository.
*/
repository(): Repository<Model>;
}) & T;
export default _default;