blow-data
Version:
Data access layer for Blow.
50 lines (41 loc) • 1.31 kB
text/typescript
;
import {isFunction, isString} from 'util';
import {BaseModel} from './BaseModel';
import {manager} from './manager';
import {
IModelMetadata,
IBaseModel,
IBaseModelConstructor
} from './interfaces';
export function isInstnace(model): boolean {
return model instanceof BaseModel;
}
export function isConstructor(model): boolean {
return (<any>model).prototype instanceof BaseModel;
}
export function getMetadata(model: IBaseModel | IBaseModelConstructor): IModelMetadata {
if(isInstnace(model)) {
return (<IBaseModelConstructor>model.constructor).metadata;
} else {
return (<IBaseModelConstructor>model).metadata;
}
}
export function getCtor(model: IBaseModel): IBaseModelConstructor {
return <IBaseModelConstructor>model.constructor;
}
export function getIdName(model: IBaseModel | IBaseModelConstructor): string {
return getMetadata(model).idProperty.name;
}
export function getIdValue(model: IBaseModel): any {
return model[getIdName(model)];
}
export function setIdValue(model: IBaseModel, id: any): void {
model[getIdName(model)] = id;
}
export function getModel(model: IBaseModelConstructor | string): IBaseModelConstructor {
if(isString(model)) {
return manager.getModel(<string>model);
} else {
return <IBaseModelConstructor>model;
}
}