miter
Version:
A typescript web framework based on ExpressJs based loosely on SailsJs
66 lines (65 loc) • 3.76 kB
TypeScript
import { Request, Response } from 'express';
import { StaticModelT, ModelT } from '../core/model';
import { CountAllResults } from '../core/db';
import { PolicyDescriptor } from '../core/policy';
export declare type PerformQueryT = {
where: Object;
include: string[];
order: [string, string][];
offset: number;
limit: number;
};
export declare type PerformFindOneQueryT = {
where: Object;
include: string[];
order: [string, string][];
};
export declare abstract class CrudController<T extends ModelT<any>> {
private staticModel;
protected readonly modelName: string;
constructor(staticModel: StaticModelT<T>, modelName: string, pluralName?: string, singularName?: string);
private splitOnWords(name);
private getSingularPath(name);
private getPluralPath(name);
private _singularName;
readonly singularName: string;
private _pluralName;
readonly pluralName: string;
transformPathPart(routeFnName: string, part: string): string;
transformRoutePolicies(routeFnName: string, fullPath: string, policies: PolicyDescriptor[]): PolicyDescriptor[];
protected getReadPolicies(): PolicyDescriptor[];
protected getQueryPolicies(): PolicyDescriptor[];
protected getCreatePolicies(): PolicyDescriptor[];
protected getMutatePolicies(): PolicyDescriptor[];
protected getDestroyPolicies(): PolicyDescriptor[];
protected transformInclude(req: Request, res: Response, include: string[]): Promise<string[] | void>;
protected transformQuery(req: Request, res: Response, query: Object): Promise<Object | boolean>;
protected performQuery(req: Request, res: Response, query: PerformQueryT): Promise<CountAllResults<T>>;
protected performFindOneQuery(req: Request, res: Response, query: PerformFindOneQueryT): Promise<T | null>;
protected transformQueryResults(req: Request, res: Response, results: CountAllResults<T>): Promise<{
results: T[];
count: any;
page: number | undefined;
perPage: number | undefined;
} | undefined>;
protected transformResult(req: Request, res: Response, result: T | null): Promise<T | null>;
protected transformCreateQuery(req: Request, res: Response, query: Object): Promise<Object | false>;
protected performCreate(req: Request, res: Response, data: object): Promise<T>;
protected transformCreateResult(req: Request, res: Response, result: T): Promise<T>;
protected transformUpdateQuery(req: Request, res: Response, query: Object): Promise<Object | false>;
protected performUpdate(req: Request, res: Response, id: string | number, data: object, returning: boolean): Promise<[number | boolean, any]>;
protected transformUpdateResult(req: Request, res: Response, result: T): Promise<T>;
protected performDestroy(req: Request, res: Response, id: number): Promise<boolean>;
protected beforeCreate(req: Request, res: Response, data: Object): Promise<void>;
protected afterCreate(req: Request, res: Response, result: T): Promise<void>;
protected beforeUpdate(req: Request, res: Response, updateId: number, data: Object): Promise<void>;
protected afterUpdate(req: Request, res: Response, updateId: number, result?: T | null): Promise<void>;
protected beforeDestroy(req: Request, res: Response, destroyId: number): Promise<void>;
protected afterDestroy(req: Request, res: Response, destroyId: number): Promise<void>;
create(req: Request, res: Response): Promise<void>;
find(req: Request, res: Response): Promise<void>;
count(req: Request, res: Response): Promise<void>;
get(req: Request, res: Response): Promise<void>;
update(req: Request, res: Response): Promise<void>;
destroy(req: Request, res: Response): Promise<void>;
}