UNPKG

@dazejs/framework

Version:

Daze.js - A powerful web framework for Node.js

59 lines (58 loc) 2.13 kB
import { HasRelations } from './relations'; import { Repository } from './repository'; export interface ColumnDescription { type: string; length: number; defaultValue?: string | number | null; secret?: boolean; } export type RelationTypes = 'hasOne' | 'belongsTo' | 'hasMany' | 'belongsToMany'; export interface RelationDesc { type: RelationTypes; entityFn: () => any; pivot?: any; foreignKey?: string; localKey?: string; relatedPivotKey?: string; foreignPivotKey?: string; } export declare class Model<TEntity = any> { private _table; private _connection; private _columns; private _customColumns; private _primaryKey; private _incrementing; private _softDeleteKey?; private _createTimestampKey?; private _updateTimestampKey?; private _relationMap; private _originEntity; constructor(Entity: { new (): TEntity; }); createNewEntity(): TEntity; getOriginEntity(): new () => TEntity; getTable(): string; setTable(table: string): this; getConnectionName(): string; getPrimaryKey(): string; getColumns(): Map<string, ColumnDescription>; getCustomColumns(): string[]; isIncrementing(): boolean; getSoftDeleteKey(): string; getSoftDeleteDefaultValue(): string | number | null; isForceDelete(): boolean; hasUpdateTimestamp(): boolean; getUpdateTimestampKey(): string | undefined; getFreshDateWithColumnKey(key: string): string | number; hasCreateTimestamp(): boolean; getCreateTimestampKey(): string | undefined; createRepository(): Repository<TEntity> & TEntity; getColumnType(key: string): string | undefined; getRelationMap(): Map<string, RelationDesc>; getFormatedDate(type?: string): string | number; getRelationImp(relation: string): HasRelations | undefined; resultToRepository(parentRepos: Repository, data: Record<string, any>, isFromCollection?: boolean): Promise<(Repository<TEntity> & TEntity)>; resultToRepositories(parentRepos: Repository, results: Record<string, any>[]): Promise<(Repository<TEntity> & TEntity)[]>; }