UNPKG

lemon-core

Version:
54 lines (53 loc) 1.6 kB
import { NextHandler, Elastic6SimpleQueriable } from 'lemon-model'; import { GeneralWEBController } from './general-controller'; import { CoreModel, TypedStorageService, UniqueFieldManager } from '../cores/'; /** * class: `APIController` * - support basic CRUD with TypedManager */ export declare class GeneralAPIController<T extends TypedStorageService<CoreModel<ModelType>, ModelType>, ModelType extends string> extends GeneralWEBController { readonly NS: string; protected storage: T; protected search: Elastic6SimpleQueriable<any>; protected unique: UniqueFieldManager<CoreModel<ModelType>, ModelType>; /** * default constructor * @param type type of REST API * @param storage storage-service * @param search search-service * @param uniqueField (optional) field in unique to lookup the origin id. */ constructor(type: string, storage: T, search: Elastic6SimpleQueriable<any>, uniqueField?: string); /** * name of this resource. */ hello: () => string; /** * override decoder of function-name. * 1. try to find default. * 2. use 'base' function. */ asFuncName(mode: string, type?: string, cmd?: string): string; /** * search node * */ listBase: NextHandler; /** * read node */ getBase: NextHandler; /** * update node. * - throw error if not found. */ putBase: NextHandler; /** * save (or create) node. */ postBase: NextHandler; /** * delete (or destroy) node */ deleteBase: NextHandler; }