Skip to content

Query Contracts

Core query support in @cratis/arc is built on typed query classes and generated proxies.

The base query interface holds cross-cutting query concerns:

interface IQuery extends ICanBeConfigured {
get sorting(): Sorting;
set sorting(value: Sorting);
get paging(): Paging;
set paging(value: Paging);
}

IQueryFor adds route, typed parameters, default value, and execution:

interface IQueryFor<TDataType, TParameters = object>
extends IQuery, IHaveParameters {
readonly route: string;
readonly requiredRequestParameters: string[];
readonly defaultValue: TDataType;
readonly roles: string[];
get parameters(): TParameters | undefined;
set parameters(value: TParameters);
perform(args?: TParameters): Promise<QueryResult<TDataType>>;
}

Query contracts include:

  • Typed parameters and responses
  • Required route/request parameter metadata
  • Sorting and paging metadata
  • Required roles for UI decisions
  • Default values for predictable initialization
  • Execution through perform()