UNPKG

@avonjs/avonjs

Version:

A fluent Node.js API generator.

63 lines (62 loc) 2.69 kB
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;