You've already forked pigallery2
							
							
				mirror of
				https://github.com/bpatrik/pigallery2.git
				synced 2025-10-30 23:57:43 +02:00 
			
		
		
		
	DatabaseManager.ts error handling update
This commit is contained in:
		| @@ -1,53 +1,55 @@ | ||||
| ///<reference path="../../../typings/main.d.ts"/> | ||||
|  | ||||
| import * as mongoose from 'mongoose'; | ||||
| import * as mongoose from "mongoose"; | ||||
| import {Schema} from "mongoose"; | ||||
| export class DatabaseManager{ | ||||
|  | ||||
| export class DatabaseManager { | ||||
|     private static _instance:DatabaseManager = null; | ||||
|     private connectionError = false; | ||||
|     private errorObject = null; | ||||
|     private connectionOpen = false; | ||||
|  | ||||
|     constructor(onError?:(err)=>void,onConnected?:() =>void){ | ||||
|         mongoose.connection.on('error', function (err) { | ||||
|             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); | ||||
|             } | ||||
|         } | ||||
|     constructor() { | ||||
|         mongoose.connect('mongodb://localhost/EQZT6L'); | ||||
|     } | ||||
|  | ||||
|     public static getInstance(onError?:(err)=>void,onConnected?:() =>void){ | ||||
|         if(DatabaseManager._instance === null){ | ||||
|             DatabaseManager._instance = new DatabaseManager(onError,onConnected); | ||||
|         }else{ | ||||
|             if(DatabaseManager._instance.connectionError === false && onConnected){ | ||||
|                 onConnected(); | ||||
|             } | ||||
|         } | ||||
|     public static getInstance(onError?:(err)=>void, onConnected?:() =>void) {  | ||||
|         if (DatabaseManager._instance === null) { | ||||
|             DatabaseManager._instance = new DatabaseManager(); | ||||
|         }   | ||||
|         return DatabaseManager._instance; | ||||
|     } | ||||
|  | ||||
|     public getModel(name:string,schema:any){ | ||||
|         return mongoose.model(name,new Schema(schema)); | ||||
|     public onConnectionError(onError:(err) => void){ | ||||
|         if (this.connectionError === true) { | ||||
|            return onError(DatabaseManager._instance.errorObject); | ||||
|         } | ||||
|         mongoose.connection.once('error', (err) => { | ||||
|             this.connectionError = true; | ||||
|             this.errorObject = err; | ||||
|             onError(err);  | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     public onConnected(onConnected:() => void){ | ||||
|         if (this.connectionOpen === true) { | ||||
|             return onConnected(); | ||||
|         } | ||||
|         mongoose.connection.once('open', (err) => { | ||||
|             this.connectionOpen = true; | ||||
|             onConnected(); | ||||
|         }); | ||||
|     } | ||||
|      | ||||
|     public disconnect(){ | ||||
|     public getModel(name:string, schema:any) { | ||||
|         return mongoose.model(name, new Schema(schema)); | ||||
|     } | ||||
|  | ||||
|     public disconnect() { | ||||
|         mongoose.disconnect(); | ||||
|     } | ||||
|      | ||||
|     public isConnectionError(){ | ||||
|  | ||||
|     public isConnectionError() { | ||||
|         return this.connectionError; | ||||
|     } | ||||
| } | ||||
| @@ -1,20 +1,18 @@ | ||||
| ///<reference path="../typings/main.d.ts"/> | ||||
|  | ||||
| import * as _express from 'express'; | ||||
| import * as _session from 'express-session'; | ||||
| import * as _bodyParser from 'body-parser'; | ||||
| import * as _debug from 'debug'; | ||||
| import * as _http from 'http'; | ||||
| import * as _express from "express"; | ||||
| import * as _session from "express-session"; | ||||
| import * as _bodyParser from "body-parser"; | ||||
| import * as _debug from "debug"; | ||||
| import * as _http from "http"; | ||||
| import {PublicRouter} from "./routes/PublicRouter"; | ||||
| import {UserRouter} from "./routes/UserRouter"; | ||||
| import {GalleryRouter} from "./routes/GalleryRouter"; | ||||
| import {AdminRouter} from "./routes/AdminRouter";  | ||||
| import {AdminRouter} from "./routes/AdminRouter"; | ||||
| import {ErrorRouter} from "./routes/ErrorRouter"; | ||||
| import {SharingRouter} from "./routes/SharingRouter"; | ||||
| import {Config, DatabaseType} from "./config/Config"; | ||||
| import {ObjectManagerRepository} from "./model/ObjectManagerRepository"; | ||||
| import {MongoGalleryManager} from "./model/mongoose/MongoGalleryManager"; | ||||
| import {MongoUserManager} from "./model/mongoose/MongoUserManager"; | ||||
| import {DatabaseManager} from "./model/mongoose/DatabaseManager"; | ||||
|  | ||||
|  | ||||
| @@ -25,14 +23,14 @@ export class Server { | ||||
|     private server:any; | ||||
|     private port:number; | ||||
|  | ||||
|     constructor(){ | ||||
|     constructor() { | ||||
|  | ||||
|         this.debug = _debug("PiGallery2:server"); | ||||
|         this.app = _express(); | ||||
|  | ||||
|         this.app.set('view engine', 'ejs'); | ||||
|  | ||||
|         if(process.env.DEBUG) { | ||||
|         if (process.env.DEBUG) { | ||||
|             var _morgan = require('morgan'); | ||||
|             this.app.use(_morgan('dev')); | ||||
|         } | ||||
| @@ -41,10 +39,10 @@ export class Server { | ||||
|          * Session above all | ||||
|          */ | ||||
|         this.app.use(_session({ | ||||
|             name:"pigallery2-session", | ||||
|             name: "pigallery2-session", | ||||
|             secret: 'PiGallery2 secret', | ||||
|             cookie: { | ||||
|                 maxAge: 60000*10, | ||||
|                 maxAge: 60000 * 10, | ||||
|                 httpOnly: false | ||||
|             }, | ||||
|             resave: true, | ||||
| @@ -57,31 +55,27 @@ export class Server { | ||||
|         // for parsing application/json | ||||
|         this.app.use(_bodyParser.json()); | ||||
|  | ||||
|  | ||||
|         if(Config.databaseType === DatabaseType.memory){ | ||||
|   | ||||
|         if (Config.databaseType === DatabaseType.memory) { | ||||
|             ObjectManagerRepository.MemoryMongoManagers(); | ||||
|         }else { | ||||
|             if (DatabaseManager.getInstance(()=>{ | ||||
|         } else { | ||||
|             ObjectManagerRepository.InitMongoManagers(); | ||||
|             DatabaseManager.getInstance().onConnectionError( | ||||
|                 ()=> { | ||||
|                     console.error("MongoDB connection error. Falling back to memory Object Managers"); | ||||
|                     ObjectManagerRepository.MemoryMongoManagers(); | ||||
|                 }).isConnectionError()) { | ||||
|                 console.error("MongoDB connection error. Falling back to memory Object Managers"); | ||||
|                 ObjectManagerRepository.MemoryMongoManagers(); | ||||
|             } else { | ||||
|                 ObjectManagerRepository.InitMongoManagers(); | ||||
|             } | ||||
|                 }); | ||||
|  | ||||
|         } | ||||
|  | ||||
|         new PublicRouter(this.app); | ||||
|          | ||||
|  | ||||
|         new UserRouter(this.app); | ||||
|         new GalleryRouter(this.app); | ||||
|         new SharingRouter(this.app); | ||||
|         new AdminRouter(this.app); | ||||
|          | ||||
|         new ErrorRouter(this.app); | ||||
|  | ||||
|      | ||||
|         new ErrorRouter(this.app); | ||||
|  | ||||
|  | ||||
|         // Get PORT from environment and store in Express. | ||||
| @@ -99,8 +93,6 @@ export class Server { | ||||
|     } | ||||
|  | ||||
|  | ||||
|      | ||||
|  | ||||
|     /** | ||||
|      * 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"); | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -1,35 +1,32 @@ | ||||
|  | ||||
| import {MongoUserManager} from "../../backend/model/mongoose/MongoUserManager"; | ||||
| import {User, UserRoles} from "../../common/entities/User"; | ||||
| import {DatabaseManager} from "../../backend/model/mongoose/DatabaseManager"; | ||||
|  | ||||
| DatabaseManager.getInstance((err)=>{ | ||||
|  | ||||
| DatabaseManager.getInstance().onConnectionError(()=> { | ||||
|     DatabaseManager.getInstance().disconnect(); | ||||
|     process.exit() | ||||
| },()=>{ | ||||
|     let userManager  = new MongoUserManager();  | ||||
|     userManager.createUser(new User(0,"demo","demo",UserRoles.Developer),(err)=>{ | ||||
|         DatabaseManager.getInstance().disconnect(); | ||||
|         process.exit() | ||||
| }); | ||||
|  | ||||
| DatabaseManager.getInstance().onConnected(()=> { | ||||
|     let userManager = new MongoUserManager(); | ||||
|     userManager.createUser(new User(0, "demo", "demo", UserRoles.Developer), (err)=> { | ||||
|  | ||||
|         userManager.createUser(new User(1, "developer", "developer", UserRoles.Developer), (err)=> { | ||||
|  | ||||
|             userManager.createUser(new User(2, "admin", "admin", UserRoles.Admin), (err)=> { | ||||
|  | ||||
|                 userManager.createUser(new User(3, "user", "user", UserRoles.User), (err)=> { | ||||
|  | ||||
|                     userManager.createUser(new User(4, "guest", "guest", UserRoles.Guest), (err)=> { | ||||
|  | ||||
|                         DatabaseManager.getInstance().disconnect(); | ||||
|                         process.exit() | ||||
|                     }); | ||||
|                 }); | ||||
|             }); | ||||
|         }); | ||||
|     }); | ||||
|  | ||||
|     userManager.createUser(new User(1,"developer","developer",UserRoles.Developer),(err)=>{ | ||||
|         DatabaseManager.getInstance().disconnect(); | ||||
|         process.exit() | ||||
|     }); | ||||
|  | ||||
|     userManager.createUser(new User(2,"admin","admin",UserRoles.Admin),(err)=>{ | ||||
|         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() | ||||
|     }); | ||||
| }); | ||||
		Reference in New Issue
	
	Block a user