lemon-core
Version:
Lemon Serverless Micro-Service Platform
54 lines (53 loc) • 1.6 kB
TypeScript
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;
}