UNPKG

@vulcan-sql/serve

Version:

VulcanSQL package for serving projects

36 lines (35 loc) 1.71 kB
/// <reference types="node" /> import { AuthUserInfo, KoaContext } from '../../../models/index'; import { APISchema, TemplateEngine, Pagination } from '@vulcan-sql/core'; import { IRequestValidator } from './requestValidator'; import { IRequestTransformer, RequestParameters } from './requestTransformer'; import { IPaginationTransformer } from './paginationTransformer'; import { Evaluator } from '../../evaluator/index'; import { KoaRequest, IncomingHttpHeaders } from '@vulcan-sql/core'; export interface TransformedRequest { reqParams: RequestParameters; pagination?: Pagination; } export interface RouteOptions { apiSchema: APISchema; reqTransformer: IRequestTransformer; reqValidator: IRequestValidator; paginationTransformer: IPaginationTransformer; templateEngine: TemplateEngine; evaluator: Evaluator; } export interface IRoute { respond(ctx: KoaContext): Promise<any>; } export declare abstract class BaseRoute implements IRoute { readonly apiSchema: APISchema; protected readonly reqTransformer: IRequestTransformer; protected readonly reqValidator: IRequestValidator; protected readonly templateEngine: TemplateEngine; protected readonly paginationTransformer: IPaginationTransformer; private evaluator; constructor({ apiSchema, reqTransformer, reqValidator, paginationTransformer, templateEngine, evaluator, }: RouteOptions); abstract respond(ctx: KoaContext): Promise<any>; protected abstract prepare(ctx: KoaContext): Promise<TransformedRequest>; protected handle(user: AuthUserInfo, transformed: TransformedRequest, req: KoaRequest, headers: IncomingHttpHeaders): Promise<import("@vulcan-sql/core").DataResult>; }