Skip to main content

Controller

Abstract controller, to use as a blueprint for framework-specific implementations.


NOT_FOUND_CODE​

HTTP 404 error code.

protected readonly NOT_FOUND_CODE: string;

FIELDS_QUERY_PARAM_SCHEMA​

fields built-in query param schema.

protected readonly FIELDS_QUERY_PARAM_SCHEMA: StringSchema;

LIMIT_QUERY_PARAM_SCHEMA​

limit built-in query param schema.

protected readonly LIMIT_QUERY_PARAM_SCHEMA: NumberSchema;

OFFSET_QUERY_PARAM_SCHEMA​

offset built-in query param schema.

protected readonly OFFSET_QUERY_PARAM_SCHEMA: NumberSchema;

SORT_BY_QUERY_PARAM_SCHEMA​

sortBy built-in query param schema.

protected readonly SORT_BY_QUERY_PARAM_SCHEMA: StringSchema;

SORT_ORDER_QUERY_PARAM_SCHEMA​

sortOrder built-in query param schema.

protected readonly SORT_ORDER_QUERY_PARAM_SCHEMA: StringSchema;

AJV_KEYWORDS​

List of special Ajv keywords, used to format special types on the fly.

protected readonly AJV_KEYWORDS: KeywordDefinition[];

AJV_FORMATTERS​

List of Ajv formatters, used to format a perseid data model into its Ajv equivalent.

protected readonly AJV_FORMATTERS: Record<string, (
model: FieldSchema<DataModel>,
requireAllFields: boolean,
) => AjvValidationSchema>;

model​

Data model to use.

protected model: Model;

logger​

Logging system to use.

protected logger: Logger;

engine​

Engine to use.

protected engine: Engine;

version​

Release version. Will be sent along with responses through the "X-Api-Version" header.

protected version: string;

endpoints​

List of built-in endpoints to register.

protected endpoints: BuiltInEndpoints<DataModel>;

parseInt​

Parses value into an integer.

protected parseInt: (value: string) => number;

textDecoder​

Used to format ArrayBuffers into strings.

protected textDecoder: TextDecoder;

increment​

Increment used for multipart/form-data payloads parsing.

protected increment: number;

ajv​

Ajv instance for payloads validation.

protected ajv: Ajv;

handleCORS​

Whether to automatically handle CORS (usually in development mode).

protected handleCORS: boolean;

handleNotFound​

Handles HTTP 404 errors.

protected handleNotFound(): void;

Usage​

TODO

formatError​

Formats error.

protected formatError(error: unknown, payloadType: string): BadRequest;

Parameters​

  • error: Error to format.
  • payloadType: Type of payload that failed validation.

Returns​

Formatted error.

Usage​

TODO

formatOutput​

Formats output to match fastify data types specifications.

protected formatOutput(output: unknown): unknown;

Parameters​

  • payloadType: Type of payload that failed validation.
  • output: Output to format.

Returns​

Formatted output.

Usage​

TODO

parseQuery​

Parses query. Built-in query params (fields, sortBy, sortOrder, limit, offset) will be correctly formatted to match engine / database client specifications. Other (custom) params will be left as is.

protected parseQuery(query: Record<string, string | null>): {
fields?: string[];

Parameters​

  • output: Output to format.
  • query: Request query params.

Returns​

Parsed query params.

Usage​

TODO

parseFormData​

Parses multipart/form-data payload, and returns its data.

protected parseFormData(
payload: IncomingMessage,
options?: FormDataOptions,
): Promise<FormDataFields>;

Parameters​

  • query: Request query params.
  • payload: Request payload.
  • options: Parser options. Defaults to { allowedMimeTypes: [], maxTotalSize: 10000000, maxFileSize: 2000000, }.

Returns​

Parsed payload.

Usage​

TODO

auth​

Verifies accessToken and deviceId to authenticate a user.

protected auth(
accessToken: string,
deviceId: string,
ignoreExpiration?: boolean,
): Promise<DataModel['users']>;

Parameters​

  • options: Parser options. Defaults to { allowedMimeTypes: [], maxTotalSize: 10000000, maxFileSize: 2000000, }.
  • accessToken: Access token to verify.
  • deviceId: Device id to verify.
  • ignoreExpiration: Whether to ignore errors when token has expired. Defaults to false.

Returns​

Authenticated user.

Throws​

  • If query.sortBy and query.sortOrders sizes do not match.

Usage​

TODO

catchErrors​

Catches and handles most common API errors thrown by callback.

protected catchErrors<T>(callback: () => Promise<T>): Promise<T>;

Parameters​

  • ignoreExpiration: Whether to ignore errors when token has expired. Defaults to false.
  • callback: Callback to wrap.

Returns​

Wrapped callback.

Usage​

TODO

constructor​

Class constructor.

public constructor(
model: Model,
logger: Logger,
engine: Engine,
settings: ControllerSettings<DataModel>,
);

Parameters​

  • callback: Callback to wrap.
  • model: Data model to use.
  • logger: Logging system to use.
  • engine: Engine to use.
  • settings: Controller settings.

Usage​

TODO