airent
Version:
Airent Framework for JavaScript Backend - a lightweight data entity and presentation framework
18 lines (17 loc) • 1.29 kB
TypeScript
/// <reference types="async-lock" />
import { AsyncLock, EntityConstructor, LoadConfig, Select } from "./types";
declare class BaseEntity<MODEL, CONTEXT = unknown, FIELD_REQUEST = unknown, RESPONSE = MODEL> {
context: CONTEXT;
protected _group: BaseEntity<MODEL, CONTEXT, FIELD_REQUEST, RESPONSE>[];
protected _lock: AsyncLock;
protected constructor(context: CONTEXT, group: BaseEntity<MODEL, CONTEXT, FIELD_REQUEST, RESPONSE>[], lock: AsyncLock);
protected initialize(_model: MODEL, _context: CONTEXT): void;
protected beforePresent<S extends FIELD_REQUEST>(_fieldRequest: S): Promise<void>;
protected afterPresent<S extends FIELD_REQUEST>(_fieldRequest: S, _response: Select<RESPONSE, S>): Promise<void>;
present<S extends FIELD_REQUEST>(_fieldRequest: S): Promise<Select<RESPONSE, S>>;
protected load<ENTITY extends BaseEntity<MODEL, CONTEXT, FIELD_REQUEST, RESPONSE>, LOADED>(config: LoadConfig<ENTITY, LOADED>): Promise<void>;
/** factories */
static fromOne<MODEL, CONTEXT, ENTITY>(this: EntityConstructor<MODEL, CONTEXT, ENTITY>, model: MODEL, context: CONTEXT): ENTITY;
static fromArray<MODEL, CONTEXT, ENTITY>(this: EntityConstructor<MODEL, CONTEXT, ENTITY>, models: MODEL[], context: CONTEXT): ENTITY[];
}
export { BaseEntity };