DatabaseManager.ts error handling update
This commit is contained in:
parent
3d8ed0a3d2
commit
f0552f6bfd
@ -1,53 +1,55 @@
|
|||||||
///<reference path="../../../typings/main.d.ts"/>
|
///<reference path="../../../typings/main.d.ts"/>
|
||||||
|
|
||||||
import * as mongoose from 'mongoose';
|
import * as mongoose from "mongoose";
|
||||||
import {Schema} from "mongoose";
|
import {Schema} from "mongoose";
|
||||||
export class DatabaseManager{
|
|
||||||
|
export class DatabaseManager {
|
||||||
private static _instance:DatabaseManager = null;
|
private static _instance:DatabaseManager = null;
|
||||||
private connectionError = false;
|
private connectionError = false;
|
||||||
|
private errorObject = null;
|
||||||
|
private connectionOpen = false;
|
||||||
|
|
||||||
constructor(onError?:(err)=>void,onConnected?:() =>void){
|
constructor() {
|
||||||
mongoose.connection.on('error', function (err) {
|
mongoose.connect('mongodb://localhost/EQZT6L');
|
||||||
this.connectionError = true;
|
|
||||||
if(onError){
|
|
||||||
onError(err);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
mongoose.connection.on('connected', function () {
|
|
||||||
if(onConnected){
|
|
||||||
onConnected();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
try {
|
|
||||||
mongoose.connect('mongodb://localhost/EQZT6L');
|
|
||||||
}catch(ex){
|
|
||||||
this.connectionError = true;
|
|
||||||
if(onError){
|
|
||||||
onError(ex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static getInstance(onError?:(err)=>void,onConnected?:() =>void){
|
public static getInstance(onError?:(err)=>void, onConnected?:() =>void) {
|
||||||
if(DatabaseManager._instance === null){
|
if (DatabaseManager._instance === null) {
|
||||||
DatabaseManager._instance = new DatabaseManager(onError,onConnected);
|
DatabaseManager._instance = new DatabaseManager();
|
||||||
}else{
|
|
||||||
if(DatabaseManager._instance.connectionError === false && onConnected){
|
|
||||||
onConnected();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return DatabaseManager._instance;
|
return DatabaseManager._instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
public getModel(name:string,schema:any){
|
public onConnectionError(onError:(err) => void){
|
||||||
return mongoose.model(name,new Schema(schema));
|
if (this.connectionError === true) {
|
||||||
|
return onError(DatabaseManager._instance.errorObject);
|
||||||
|
}
|
||||||
|
mongoose.connection.once('error', (err) => {
|
||||||
|
this.connectionError = true;
|
||||||
|
this.errorObject = err;
|
||||||
|
onError(err);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public disconnect(){
|
public onConnected(onConnected:() => void){
|
||||||
|
if (this.connectionOpen === true) {
|
||||||
|
return onConnected();
|
||||||
|
}
|
||||||
|
mongoose.connection.once('open', (err) => {
|
||||||
|
this.connectionOpen = true;
|
||||||
|
onConnected();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public getModel(name:string, schema:any) {
|
||||||
|
return mongoose.model(name, new Schema(schema));
|
||||||
|
}
|
||||||
|
|
||||||
|
public disconnect() {
|
||||||
mongoose.disconnect();
|
mongoose.disconnect();
|
||||||
}
|
}
|
||||||
|
|
||||||
public isConnectionError(){
|
public isConnectionError() {
|
||||||
return this.connectionError;
|
return this.connectionError;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,10 +1,10 @@
|
|||||||
///<reference path="../typings/main.d.ts"/>
|
///<reference path="../typings/main.d.ts"/>
|
||||||
|
|
||||||
import * as _express from 'express';
|
import * as _express from "express";
|
||||||
import * as _session from 'express-session';
|
import * as _session from "express-session";
|
||||||
import * as _bodyParser from 'body-parser';
|
import * as _bodyParser from "body-parser";
|
||||||
import * as _debug from 'debug';
|
import * as _debug from "debug";
|
||||||
import * as _http from 'http';
|
import * as _http from "http";
|
||||||
import {PublicRouter} from "./routes/PublicRouter";
|
import {PublicRouter} from "./routes/PublicRouter";
|
||||||
import {UserRouter} from "./routes/UserRouter";
|
import {UserRouter} from "./routes/UserRouter";
|
||||||
import {GalleryRouter} from "./routes/GalleryRouter";
|
import {GalleryRouter} from "./routes/GalleryRouter";
|
||||||
@ -13,8 +13,6 @@ import {ErrorRouter} from "./routes/ErrorRouter";
|
|||||||
import {SharingRouter} from "./routes/SharingRouter";
|
import {SharingRouter} from "./routes/SharingRouter";
|
||||||
import {Config, DatabaseType} from "./config/Config";
|
import {Config, DatabaseType} from "./config/Config";
|
||||||
import {ObjectManagerRepository} from "./model/ObjectManagerRepository";
|
import {ObjectManagerRepository} from "./model/ObjectManagerRepository";
|
||||||
import {MongoGalleryManager} from "./model/mongoose/MongoGalleryManager";
|
|
||||||
import {MongoUserManager} from "./model/mongoose/MongoUserManager";
|
|
||||||
import {DatabaseManager} from "./model/mongoose/DatabaseManager";
|
import {DatabaseManager} from "./model/mongoose/DatabaseManager";
|
||||||
|
|
||||||
|
|
||||||
@ -25,14 +23,14 @@ export class Server {
|
|||||||
private server:any;
|
private server:any;
|
||||||
private port:number;
|
private port:number;
|
||||||
|
|
||||||
constructor(){
|
constructor() {
|
||||||
|
|
||||||
this.debug = _debug("PiGallery2:server");
|
this.debug = _debug("PiGallery2:server");
|
||||||
this.app = _express();
|
this.app = _express();
|
||||||
|
|
||||||
this.app.set('view engine', 'ejs');
|
this.app.set('view engine', 'ejs');
|
||||||
|
|
||||||
if(process.env.DEBUG) {
|
if (process.env.DEBUG) {
|
||||||
var _morgan = require('morgan');
|
var _morgan = require('morgan');
|
||||||
this.app.use(_morgan('dev'));
|
this.app.use(_morgan('dev'));
|
||||||
}
|
}
|
||||||
@ -41,10 +39,10 @@ export class Server {
|
|||||||
* Session above all
|
* Session above all
|
||||||
*/
|
*/
|
||||||
this.app.use(_session({
|
this.app.use(_session({
|
||||||
name:"pigallery2-session",
|
name: "pigallery2-session",
|
||||||
secret: 'PiGallery2 secret',
|
secret: 'PiGallery2 secret',
|
||||||
cookie: {
|
cookie: {
|
||||||
maxAge: 60000*10,
|
maxAge: 60000 * 10,
|
||||||
httpOnly: false
|
httpOnly: false
|
||||||
},
|
},
|
||||||
resave: true,
|
resave: true,
|
||||||
@ -58,18 +56,16 @@ export class Server {
|
|||||||
this.app.use(_bodyParser.json());
|
this.app.use(_bodyParser.json());
|
||||||
|
|
||||||
|
|
||||||
if(Config.databaseType === DatabaseType.memory){
|
if (Config.databaseType === DatabaseType.memory) {
|
||||||
ObjectManagerRepository.MemoryMongoManagers();
|
ObjectManagerRepository.MemoryMongoManagers();
|
||||||
}else {
|
} else {
|
||||||
if (DatabaseManager.getInstance(()=>{
|
ObjectManagerRepository.InitMongoManagers();
|
||||||
|
DatabaseManager.getInstance().onConnectionError(
|
||||||
|
()=> {
|
||||||
console.error("MongoDB connection error. Falling back to memory Object Managers");
|
console.error("MongoDB connection error. Falling back to memory Object Managers");
|
||||||
ObjectManagerRepository.MemoryMongoManagers();
|
ObjectManagerRepository.MemoryMongoManagers();
|
||||||
}).isConnectionError()) {
|
});
|
||||||
console.error("MongoDB connection error. Falling back to memory Object Managers");
|
|
||||||
ObjectManagerRepository.MemoryMongoManagers();
|
|
||||||
} else {
|
|
||||||
ObjectManagerRepository.InitMongoManagers();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
new PublicRouter(this.app);
|
new PublicRouter(this.app);
|
||||||
@ -82,8 +78,6 @@ export class Server {
|
|||||||
new ErrorRouter(this.app);
|
new ErrorRouter(this.app);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Get PORT from environment and store in Express.
|
// Get PORT from environment and store in Express.
|
||||||
this.app.set('port', Config.PORT);
|
this.app.set('port', Config.PORT);
|
||||||
|
|
||||||
@ -99,8 +93,6 @@ export class Server {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Event listener for HTTP server "error" event.
|
* Event listener for HTTP server "error" event.
|
||||||
*/
|
*/
|
||||||
@ -143,8 +135,7 @@ export class Server {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (process.env.DEBUG) {
|
||||||
if(process.env.DEBUG) {
|
|
||||||
console.log("Running in DEBUG mode");
|
console.log("Running in DEBUG mode");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,35 +1,32 @@
|
|||||||
|
|
||||||
import {MongoUserManager} from "../../backend/model/mongoose/MongoUserManager";
|
import {MongoUserManager} from "../../backend/model/mongoose/MongoUserManager";
|
||||||
import {User, UserRoles} from "../../common/entities/User";
|
import {User, UserRoles} from "../../common/entities/User";
|
||||||
import {DatabaseManager} from "../../backend/model/mongoose/DatabaseManager";
|
import {DatabaseManager} from "../../backend/model/mongoose/DatabaseManager";
|
||||||
|
|
||||||
DatabaseManager.getInstance((err)=>{
|
|
||||||
|
DatabaseManager.getInstance().onConnectionError(()=> {
|
||||||
DatabaseManager.getInstance().disconnect();
|
DatabaseManager.getInstance().disconnect();
|
||||||
process.exit()
|
process.exit()
|
||||||
},()=>{
|
});
|
||||||
let userManager = new MongoUserManager();
|
|
||||||
userManager.createUser(new User(0,"demo","demo",UserRoles.Developer),(err)=>{
|
DatabaseManager.getInstance().onConnected(()=> {
|
||||||
DatabaseManager.getInstance().disconnect();
|
let userManager = new MongoUserManager();
|
||||||
process.exit()
|
userManager.createUser(new User(0, "demo", "demo", UserRoles.Developer), (err)=> {
|
||||||
});
|
|
||||||
|
userManager.createUser(new User(1, "developer", "developer", UserRoles.Developer), (err)=> {
|
||||||
userManager.createUser(new User(1,"developer","developer",UserRoles.Developer),(err)=>{
|
|
||||||
DatabaseManager.getInstance().disconnect();
|
userManager.createUser(new User(2, "admin", "admin", UserRoles.Admin), (err)=> {
|
||||||
process.exit()
|
|
||||||
});
|
userManager.createUser(new User(3, "user", "user", UserRoles.User), (err)=> {
|
||||||
|
|
||||||
userManager.createUser(new User(2,"admin","admin",UserRoles.Admin),(err)=>{
|
userManager.createUser(new User(4, "guest", "guest", UserRoles.Guest), (err)=> {
|
||||||
DatabaseManager.getInstance().disconnect();
|
|
||||||
process.exit()
|
DatabaseManager.getInstance().disconnect();
|
||||||
});
|
process.exit()
|
||||||
|
});
|
||||||
userManager.createUser(new User(3,"user","user",UserRoles.User),(err)=>{
|
});
|
||||||
DatabaseManager.getInstance().disconnect();
|
});
|
||||||
process.exit()
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
userManager.createUser(new User(4,"guest","guest",UserRoles.Guest),(err)=>{
|
|
||||||
DatabaseManager.getInstance().disconnect();
|
|
||||||
process.exit()
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
Loading…
Reference in New Issue
Block a user