@scefira/dfw-nodejs
Version:
50 lines (36 loc) • 1.47 kB
text/typescript
import DFWModule from "./DFWModule.";
import { DFWScheme } from "../..";
import { Sequelize , SequelizeOptions } from "sequelize-typescript";
import path from "path";
import DFWInstance from "../system/DFWInstance";
export default class DatabaseManager extends DFWModule{
private databases:{[id:string]:Database} = {};
public constructor(instance:DFWInstance){
super(instance);
var cfgkeys = Object.keys(instance.config.databases);
cfgkeys.forEach((key:string) => {
var dbcfg = instance.config.databases[key];
this.databases[key] = new Database(dbcfg);
});
}
public async touchAsync(dfw:DFWScheme){
}
public getDatabase(name:string = "default"){
return this.databases[name];
}
}
export class Database{
public connection: Sequelize;
public constructor(config:SequelizeOptions){
config.modelMatch = (filename,member) =>{
console.log("-" + filename);
return filename.substring(0, filename.indexOf('.model')) === member.toLowerCase();
}
this.connection = new Sequelize(config);
if(process.env.NODE_ENV === "dfw_development") {
this.connection.addModels([path.join(__dirname, '../../model', "/*.model.ts")]);
}else{
this.connection.addModels([path.join(__dirname, '../../model', "/*.model.js")]);
}
}
}