grand-connectors
Version:
A Grandjs package for applying repository pattern for nodejs and javascript applications using typescript
44 lines (37 loc) • 1.13 kB
text/typescript
/**
* @package @GrandConnectors
* @author Tarek Salem
* MIT License
*/
/**
* ==============================================================================
* File Role: Main File
* ==============================================================================
*/
import {IDataSource, IRepository, ServiceModes} from "./types";
import {InjectDataSource, InjectModel, InjectService, loadClass} from "./decorators";
enum DBSourceTypes{
mongoose = "mongoose",
sequalize = "sequalize"
}
abstract class Repository implements IRepository{
dataSources:{[key:string]:DataSource}
Models:{[key:string]: {
DataSource:DataSource,
Model?:any,
Entity?:any
}}
}
abstract class DataSource implements IDataSource{
abstract type: string;
constructor() {
this.init().then().catch(err => { throw Error(err) });
}
private async init() {
if(this.connect) {
return this.connect();
}
}
abstract connect():any;
}
export {DataSource, Repository, IDataSource, ServiceModes, IRepository, InjectDataSource, InjectModel, InjectService, loadClass}