1.0.0 • Published 4 years ago
core-repository v1.0.0
Repository Pattern for Type Script
Change Log
- Allow define decorator by yourself
- Callback change to function
- Declare Decorator
import "reflect-metadata"
export const MetadataKey = "Sql:repository";
export function Sql(sql: string) {
return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {
Reflect.defineMetadata(MetadataKey, sql, target.__proto__, descriptor.value.name);
};
}
let sqlCallback: CallbackFunc = function(metadata: any, ...params:any[]):any {
// Will be executed when "Decorator" function called
return 1;
}
// Regist to Repository Manager
RepoManager.regist(MetadataKey, sqlCallback);
- Declare Repository with @Sql
export class SampleRepository{
@Sql('select * from "order" where "id" = ?')
public async findById(id:Number):Promise<any> {return null};
}
- Use repository
var repository = RepositoryFactory.repoConstructor(null, SampleRepository);
var result = await repository.findById(1); // return 1
- Inversify integreation
@(fluentProvide(SampleRepository).inSingletonScope().onActivation(repoConstructor).done())
export class SampleRepository{
@Sql('select * from "order" where "id" = ?')
public async findById(id:Number):Promise<any> {return null};
}