@dazejs/framework
Version:
Daze.js - A powerful web framework for Node.js
59 lines (58 loc) • 2.13 kB
TypeScript
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)[]>;
}