1
0
mirror of https://github.com/xuthus83/pigallery2.git synced 2024-11-03 21:04:03 +08:00
pigallery2/backend/model/ObjectManagerRepository.ts
2017-07-25 21:09:37 +02:00

102 lines
3.5 KiB
TypeScript

import {IUserManager} from "./interfaces/IUserManager";
import {IGalleryManager} from "./interfaces/IGalleryManager";
import {ISearchManager} from "./interfaces/ISearchManager";
import {SQLConnection} from "./sql/SQLConnection";
import {ISharingManager} from "./interfaces/ISharingManager";
import {Logger} from "../Logger";
import {IIndexingManager} from "./interfaces/IIndexingManager";
export class ObjectManagerRepository {
private _galleryManager: IGalleryManager;
private _userManager: IUserManager;
private _searchManager: ISearchManager;
private _sharingManager: ISharingManager;
private _indexingManager: IIndexingManager;
private static _instance: ObjectManagerRepository = null;
get IndexingManager(): IIndexingManager {
return this._indexingManager;
}
set IndexingManager(value: IIndexingManager) {
this._indexingManager = value;
}
public static getInstance() {
if (this._instance === null) {
this._instance = new ObjectManagerRepository();
}
return this._instance;
}
public static async reset() {
await SQLConnection.close();
this._instance = null;
}
get GalleryManager(): IGalleryManager {
return this._galleryManager;
}
set GalleryManager(value: IGalleryManager) {
this._galleryManager = value;
}
get UserManager(): IUserManager {
return this._userManager;
}
set UserManager(value: IUserManager) {
this._userManager = value;
}
get SearchManager(): ISearchManager {
return this._searchManager;
}
set SearchManager(value: ISearchManager) {
this._searchManager = value;
}
get SharingManager(): ISharingManager {
return this._sharingManager;
}
set SharingManager(value: ISharingManager) {
this._sharingManager = value;
}
public static async InitMemoryManagers() {
await ObjectManagerRepository.reset();
const GalleryManager = require("./memory/GalleryManager").GalleryManager;
const UserManager = require("./memory/UserManager").UserManager;
const SearchManager = require("./memory/SearchManager").SearchManager;
const SharingManager = require("./memory/SharingManager").SharingManager;
const IndexingManager = require("./memory/IndexingManager").IndexingManager;
ObjectManagerRepository.getInstance().GalleryManager = new GalleryManager();
ObjectManagerRepository.getInstance().UserManager = new UserManager();
ObjectManagerRepository.getInstance().SearchManager = new SearchManager();
ObjectManagerRepository.getInstance().SharingManager = new SharingManager();
ObjectManagerRepository.getInstance().IndexingManager = new IndexingManager();
}
public static async InitSQLManagers() {
await ObjectManagerRepository.reset();
await SQLConnection.init();
const GalleryManager = require("./sql/GalleryManager").GalleryManager;
const UserManager = require("./sql/UserManager").UserManager;
const SearchManager = require("./sql/SearchManager").SearchManager;
const SharingManager = require("./sql/SharingManager").SharingManager;
const IndexingManager = require("./sql/IndexingManager").IndexingManager;
ObjectManagerRepository.getInstance().GalleryManager = new GalleryManager();
ObjectManagerRepository.getInstance().UserManager = new UserManager();
ObjectManagerRepository.getInstance().SearchManager = new SearchManager();
ObjectManagerRepository.getInstance().SharingManager = new SharingManager();
ObjectManagerRepository.getInstance().IndexingManager = new IndexingManager();
Logger.debug("SQL DB inited");
}
}