Skip to main content

FastifyController

API controller, designed for Fastify framework.

class FastifyController<
/** Data model types definitions. */
DataModel extends DefaultDataModel = DefaultDataModel,

/** Model class types definitions. */
Model extends BaseModel<DataModel> = BaseModel<DataModel>,

/** Database client types definition. */
Engine extends UsersEngine<DataModel> = UsersEngine<DataModel>,
> extends Controller<DataModel, Model, Engine>

constructor

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

Description

Class constructor.

Parameters

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

createSchema

protected createSchema(schema: ModelSchema<DataModel>, mode: 'CREATE' | 'UPDATE', transformer?: (schema: FastifySchema) => FastifySchema): FastifySchema;

Description

Creates an Ajv validation schema from schema.

Parameters

  • schema: Schema from which to create validation schema.
  • mode: Which mode (creation / update) is intended for schema generation.
  • transformer: Optional transformation function to apply to generated Ajv schema.

Returns

Ajv validation schema.


formatError

protected formatError(error: ValidationError[], dataVar: string): Error;

Description

Formats error.

Parameters

  • error: Error to format.
  • dataVar: Additional info to format error with.

Returns

Formatted error.


parseFormData

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

Description

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

Parameters

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

Returns

Parsed payload.


handleNotFound

protected handleNotFound(): void;

Description

Handles HTTP 404 errors.


handleError

protected handleError(error: FastifyError, request: FastifyRequest, response: FastifyReply): void;

Description

Handles thrown errors and formats a clean HTTP response.

Parameters

  • error: Error thrown by fastify.
  • request: Fastify request.
  • response: Fastify response.

auth

protected auth(accessToken: string, deviceId: string, ignoreExpiration?: boolean): Promise<User>;

Description

Verifies accessToken and deviceId to authenticate a user.

Parameters

  • 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 user specified in the access token does not exist, or if device does exist for user.

createEndpoint

public createEndpoint(settings: EndpointSettings<DataModel>): {
handler: (request: FastifyRequest, response: FastifyReply) => Promise<void>;
schema: FastifySchema;
};

Description

Creates a new fastify endpoint from settings.

Parameters

  • settings: Endpoint configuration.

Returns

Fastify endpoint to register.


createEndpoints

public createEndpoints(instance: FastifyInstance, options?: RegisterOptions): void;

Description

Registers hooks, handlers, auth and CRUD-related endpoints to instance.

Parameters

  • instance: Fastify instance to register endpoints and hooks to.
  • options: Additional options to pass to fastify register function.