import { ID, BaseEntity } from '../model/baseentity'; import { AppDao } from './appdao'; import { Observable } from 'rxjs'; import { RestQuery, PageData, QueryParams } from '../restquery/restquery'; import { AppRest } from './rest'; import { EntityMeta } from '../meta/entitymetadata'; /** * 基本业务DAO * @export */ export declare class BaseDao { appDao: AppDao; entityName: string; readonly appRest: AppRest; constructor(appDao: AppDao, entityName: string); /** * 按照ID获取实体 * @template T 实体类型 * @param ID id 实体ID * @returns Observable 实体对象 * @memberOf EntityBaseDao */ get(id: ID): Observable; /** * 获取实体URL, * 如果指定了实体对象或者ID,返回:<baseUrl>/<id>, * 如果指定了操作,返回:<baseUrl>/<id>/<op> * @param obj 实体对象或者ID * @param op 实体操作 */ getUrl(obj?: T | ID, op?: string): string; /** * 实体查询,参数有Map构成,将会重新解析为RestQuery进行查询 * @param params 查询参数,以下键值将被解析为特定参数,其余键值将当做查询条件:
* first: 分页查询指定的开始位置
* rows: 分页查询每页的大小,如果小于等于0,表示不分页
* orderBy: 排序属性,如 deptName asc,deptName desc等等。多个人排序通过逗号进行分隔
* sort: 排序设置数组
* limit: 非分页查询中,返回数量的限制
* aggregate: 对满足条件的数据进行聚合统计
* columns: 查询或者统计的列 * @see RestQuery * @returns PageData */ getEntity(params?: { [prop: string]: any; }): Observable>; /** * 实体查询 * @param entityName 实体名称 * @param params * @returns PageData */ getQuery(params: RestQuery): Observable>; /** * 按照指定条件查询实体列表 * 可指定最大的返回行数 * @template T 实体类型 * @param QueryPrams} [params] 查询参数 * @param number [limit] 返回行数限制 * @returns Observable 实体列表 * @memberOf AppDao */ getList(params?: QueryParams, limit?: number): Observable; /** * 实体分页查询 * @template T 实体类型 * @param number first 分页起点 * @param number rows 分页页长 * @param QueryParams params 查询参数 * @returns Observable> 分页结果 * @memberOf AppDao */ getPage(first: number, rows: number, params?: QueryParams): Observable>; /** * 保存实体到后台 * @template T 实体类型 * @param T obj 实体对象 * @returns Observable 保存后的实体对象 * @memberOf AppDao */ save(obj: T): Observable; /** * 删除实体 * @param string entityName 实体名称 * @param (aseEntity | ID)} obj 实体ID或者实体对象 * @returns Observable * @memberOf AppDao */ remove(obj: BaseEntity | ID): Observable; /** * 获取实体元数据 */ getMetadata(flat: boolean): Observable; }