@topgroup/diginext
Version:
A BUILD SERVER & CLI to deploy apps to any Kubernetes clusters.
38 lines • 1.84 kB
TypeScript
import type { NextFunction, Response } from "express";
import type { IUser, IWorkspace } from "../entities";
import type { IBase } from "../entities/Base";
import type { AppRequest, Ownership } from "../interfaces/SystemTypes";
import { type BaseService } from "../services/BaseService";
import type { IQueryFilter, IQueryOptions, IResponsePagination } from "../interfaces/IQuery";
import type { ResponseData } from "../interfaces/ResponseData";
export default class BaseController<T extends IBase = any, S extends BaseService<T> = BaseService> {
req: AppRequest;
service: S;
user: IUser;
workspace: IWorkspace;
ownership: Ownership;
filter: IQueryFilter;
options: IQueryOptions;
pagination: IResponsePagination;
constructor(service?: S);
read(): Promise<ResponseData>;
create(inputData: any): Promise<ResponseData>;
update(updateData: any): Promise<ResponseData>;
delete(): Promise<ResponseData>;
softDelete(): Promise<ResponseData>;
empty(): Promise<ResponseData | (ResponseData & {
data: {
ok: number;
};
})>;
parseDateRange(req: AppRequest, res?: Response, next?: NextFunction): void;
parseBody(req: AppRequest, res?: Response, next?: NextFunction): void;
/**
* Parse the filter option from the URL:
* - List (first page, 10 item per page, sort "desc" by "updatedAt" first, then "desc" by "createdAt"): `https://example.com/api/v1/user?page=1&size=10&sort=-updatedAt,-createdAt`
* - Search (by username that contains "john"): `https://example.com/api/v1/user?page=1&size=10&username=john&search=true`
*/
parseFilter(req: AppRequest, res?: Response, next?: NextFunction): void;
parsePagination(req: AppRequest, res?: Response, next?: NextFunction): Promise<void>;
}
//# sourceMappingURL=BaseController.d.ts.map