mirror of
https://github.com/bpatrik/pigallery2.git
synced 2025-01-26 05:27:35 +02:00
implementing mongoose managers
This commit is contained in:
parent
4a44f232a8
commit
bba7479184
@ -1,6 +1,10 @@
|
||||
|
||||
import {ConfigLoader} from "./ConfigLoader";
|
||||
|
||||
export enum DatabaseType{
|
||||
memory, mongoDB
|
||||
}
|
||||
|
||||
export class ConfigClass{
|
||||
|
||||
constructor(){
|
||||
@ -12,6 +16,7 @@ export class ConfigClass{
|
||||
public thumbnailSizes:Array<number> = [200];
|
||||
public imagesFolder:string = "/demo/images";
|
||||
public thumbnailFolder:string = "/demo/TEMP";
|
||||
public databaseType:DatabaseType = DatabaseType.mongoDB;
|
||||
}
|
||||
|
||||
|
||||
|
@ -2,10 +2,10 @@
|
||||
///<reference path="../../typings/main.d.ts"/>
|
||||
|
||||
|
||||
import {UserManager} from "../model/UserManager";
|
||||
import {NextFunction, Request, Response} from "express";
|
||||
import {Error, ErrorCodes} from "../../common/entities/Error";
|
||||
import {UserRoles} from "../../common/entities/User";
|
||||
import {ObjectManagerRepository} from "../model/ObjectManagerRepository";
|
||||
|
||||
export class AuthenticationMWs {
|
||||
|
||||
@ -40,10 +40,9 @@ export class AuthenticationMWs {
|
||||
(typeof req.body.loginCredential.password === 'undefined')) {
|
||||
return next();
|
||||
}
|
||||
|
||||
//lets find the user
|
||||
UserManager.findOne({
|
||||
username: req.body.loginCredential.username,
|
||||
ObjectManagerRepository.getInstance().getUserManager().findOne({
|
||||
name: req.body.loginCredential.username,
|
||||
password: req.body.loginCredential.password
|
||||
}, (err, result) => {
|
||||
if ((err) || (!result)) {
|
||||
|
@ -3,9 +3,10 @@ import * as path from 'path';
|
||||
import * as fs from 'fs';
|
||||
import {NextFunction, Request, Response} from "express";
|
||||
import {Error, ErrorCodes} from "../../common/entities/Error";
|
||||
import {GalleryManager} from "../model/GalleryManager";
|
||||
import {GalleryManager} from "../model/memory/GalleryManager";
|
||||
import {Directory} from "../../common/entities/Directory";
|
||||
import {Config} from "../config/Config";
|
||||
import {ObjectManagerRepository} from "../model/ObjectManagerRepository";
|
||||
|
||||
export class GalleryMWs {
|
||||
|
||||
@ -22,7 +23,7 @@ export class GalleryMWs {
|
||||
return next();
|
||||
}
|
||||
|
||||
GalleryManager.listDirectory(directoryName,(err,directory:Directory) => {
|
||||
ObjectManagerRepository.getInstance().getGalleryManager().listDirectory(directoryName,(err,directory:Directory) => {
|
||||
if(err || !directory){
|
||||
return next(new Error(ErrorCodes.GENERAL_ERROR,err));
|
||||
}
|
||||
|
@ -1,7 +1,8 @@
|
||||
|
||||
import {UserManager} from "../model/UserManager";
|
||||
import {UserManager} from "../model/memory/UserManager";
|
||||
import {NextFunction, Request, Response} from "express";
|
||||
import {Error, ErrorCodes} from "../../common/entities/Error";
|
||||
import {ObjectManagerRepository} from "../model/ObjectManagerRepository";
|
||||
|
||||
export class UserMWs {
|
||||
|
||||
@ -12,8 +13,8 @@ export class UserMWs {
|
||||
|| (typeof req.body.userModReq.newPassword === 'undefined')) {
|
||||
return next();
|
||||
}
|
||||
|
||||
UserManager.changePassword(req.body.userModReq, (err, result) =>{
|
||||
|
||||
ObjectManagerRepository.getInstance().getUserManager().changePassword(req.body.userModReq, (err, result) =>{
|
||||
if ((err) || (!result)) {
|
||||
return next(new Error(ErrorCodes.GENERAL_ERROR));
|
||||
}
|
||||
@ -28,7 +29,7 @@ export class UserMWs {
|
||||
return next();
|
||||
}
|
||||
|
||||
UserManager.createUser(req.body.newUser, (err, result) =>{
|
||||
ObjectManagerRepository.getInstance().getUserManager().createUser(req.body.newUser, (err, result) =>{
|
||||
if ((err) || (!result)) {
|
||||
return next(new Error(ErrorCodes.USER_CREATION_ERROR));
|
||||
}
|
||||
@ -44,7 +45,7 @@ export class UserMWs {
|
||||
return next();
|
||||
}
|
||||
|
||||
UserManager.deleteUser(req.body.userModReq.id, (err, result) =>{
|
||||
ObjectManagerRepository.getInstance().getUserManager().deleteUser(req.body.userModReq.id, (err, result) =>{
|
||||
if ((err) || (!result)) {
|
||||
return next(new Error(ErrorCodes.GENERAL_ERROR));
|
||||
}
|
||||
@ -62,8 +63,8 @@ export class UserMWs {
|
||||
return next();
|
||||
}
|
||||
|
||||
UserManager.changeRole(req.body.userModReq, (err, result) =>{
|
||||
if ((err) || (!result)) {
|
||||
ObjectManagerRepository.getInstance().getUserManager().changeRole(req.body.userModReq, (err) =>{
|
||||
if (err) {
|
||||
return next(new Error(ErrorCodes.GENERAL_ERROR));
|
||||
}
|
||||
|
||||
@ -73,7 +74,7 @@ export class UserMWs {
|
||||
|
||||
|
||||
public static listUsers(req:Request, res:Response, next:NextFunction){
|
||||
UserManager.find({}, (err, result) =>{
|
||||
ObjectManagerRepository.getInstance().getUserManager().find({}, (err, result) =>{
|
||||
if ((err) || (!result)) {
|
||||
return next(new Error(ErrorCodes.GENERAL_ERROR));
|
||||
}
|
||||
|
@ -1,8 +1,9 @@
|
||||
|
||||
import {UserManager} from "../model/UserManager";
|
||||
import {UserManager} from "../model/memory/UserManager";
|
||||
import {NextFunction, Request, Response} from "express";
|
||||
import {Error, ErrorCodes} from "../../common/entities/Error";
|
||||
import {UserRoles} from "../../common/entities/User";
|
||||
import {ObjectManagerRepository} from "../model/ObjectManagerRepository";
|
||||
|
||||
export class UserRequestConstrainsMWs {
|
||||
|
||||
@ -40,7 +41,7 @@ export class UserRequestConstrainsMWs {
|
||||
return next();
|
||||
}
|
||||
|
||||
UserManager.find({minRole:UserRoles.Admin}, (err, result) =>{
|
||||
ObjectManagerRepository.getInstance().getUserManager().find({minRole:UserRoles.Admin}, (err, result) =>{
|
||||
if ((err) || (!result)) {
|
||||
return next(new Error(ErrorCodes.GENERAL_ERROR));
|
||||
}
|
||||
|
@ -6,10 +6,9 @@ import * as sizeOf from 'image-size';
|
||||
import {Directory} from "../../common/entities/Directory";
|
||||
import {Photo} from "../../common/entities/Photo";
|
||||
|
||||
export class GalleryManager {
|
||||
|
||||
|
||||
public static listDirectory(relativeDirectoryName, cb:(error: any,result:Directory) => void){
|
||||
export class DiskManager{
|
||||
public static scanDirectory(relativeDirectoryName, cb:(error: any, result:Directory) => void){
|
||||
console.log("DiskManager: scanDirectory");
|
||||
let directoryName = path.basename(relativeDirectoryName);
|
||||
let directoryParent = path.join( path.dirname(relativeDirectoryName),"/");
|
||||
let absoluteDirectoryName = path.join(__dirname,"/../../demo/images", relativeDirectoryName);
|
||||
@ -30,7 +29,7 @@ export class GalleryManager {
|
||||
directory.directories.push(new Directory(2,file,relativeDirectoryName,new Date(),[],[]));
|
||||
}
|
||||
|
||||
if(GalleryManager.isImage(fullFilePath)){
|
||||
if(DiskManager.isImage(fullFilePath)){
|
||||
let dimensions = sizeOf(fullFilePath);
|
||||
directory.photos.push(new Photo(1,file,dimensions.width,dimensions.height));
|
||||
}
|
||||
@ -62,5 +61,4 @@ export class GalleryManager {
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
4
backend/model/IGalleryManager.ts
Normal file
4
backend/model/IGalleryManager.ts
Normal file
@ -0,0 +1,4 @@
|
||||
import {Directory} from "../../common/entities/Directory";
|
||||
export interface IGalleryManager {
|
||||
listDirectory(relativeDirectoryName, cb:(error: any,result:Directory) => void);
|
||||
}
|
9
backend/model/IUserManager.ts
Normal file
9
backend/model/IUserManager.ts
Normal file
@ -0,0 +1,9 @@
|
||||
import {User} from "../../common/entities/User";
|
||||
export interface IUserManager {
|
||||
findOne(filter,cb:(error: any,result:User) => void);
|
||||
find(filter,cb:(error: any,result:Array<User>) => void);
|
||||
createUser(user,cb:(error: any,result:User) => void);
|
||||
deleteUser(id:number,cb:(error: any,result:string) => void);
|
||||
changeRole(request:any,cb:(error: any) => void);
|
||||
changePassword(request:any,cb:(error: any,result:string) => void);
|
||||
}
|
47
backend/model/ObjectManagerRepository.ts
Normal file
47
backend/model/ObjectManagerRepository.ts
Normal file
@ -0,0 +1,47 @@
|
||||
import {IUserManager} from "./IUserManager";
|
||||
import {IGalleryManager} from "./IGalleryManager";
|
||||
import {MongoGalleryManager} from "./mongoose/MongoGalleryManager";
|
||||
import {MongoUserManager} from "./mongoose/MongoUserManager";
|
||||
import {GalleryManager} from "./memory/GalleryManager";
|
||||
import {UserManager} from "./memory/UserManager";
|
||||
|
||||
export class ObjectManagerRepository{
|
||||
|
||||
private _galleryManager:IGalleryManager;
|
||||
private _userManager:IUserManager;
|
||||
private static _instance:ObjectManagerRepository = null;
|
||||
|
||||
public static InitMongoManagers(){
|
||||
ObjectManagerRepository.getInstance().setGalleryManager(new MongoGalleryManager());
|
||||
ObjectManagerRepository.getInstance().setUserManager(new MongoUserManager());
|
||||
}
|
||||
|
||||
public static MemoryMongoManagers(){
|
||||
ObjectManagerRepository.getInstance().setGalleryManager(new GalleryManager());
|
||||
ObjectManagerRepository.getInstance().setUserManager(new UserManager());
|
||||
}
|
||||
|
||||
public static getInstance(){
|
||||
if(this._instance === null){
|
||||
this._instance = new ObjectManagerRepository();
|
||||
}
|
||||
return this._instance;
|
||||
}
|
||||
|
||||
|
||||
getGalleryManager():IGalleryManager {
|
||||
return this._galleryManager;
|
||||
}
|
||||
|
||||
setGalleryManager(value:IGalleryManager) {
|
||||
this._galleryManager = value;
|
||||
}
|
||||
|
||||
getUserManager():IUserManager {
|
||||
return this._userManager;
|
||||
}
|
||||
|
||||
setUserManager(value:IUserManager) {
|
||||
this._userManager = value;
|
||||
}
|
||||
}
|
@ -1,32 +0,0 @@
|
||||
import {User} from "../../common/entities/User";
|
||||
export class UserManager {
|
||||
|
||||
private static users = [new User(1,"TestUser","test@test.hu","122345")];
|
||||
|
||||
public static findOne(filter,cb:(error: any,result:User) => void){
|
||||
return cb(null, UserManager.users[0]);
|
||||
}
|
||||
|
||||
public static find(filter,cb:(error: any,result:Array<User>) => void){
|
||||
return cb(null, UserManager.users);
|
||||
}
|
||||
|
||||
public static createUser(user,cb:(error: any,result:User) => void){
|
||||
|
||||
UserManager.users.push(user);
|
||||
return cb(null, user);
|
||||
}
|
||||
|
||||
public static deleteUser(id:number,cb:(error: any,result:string) => void){
|
||||
UserManager.users = UserManager.users.filter(u => u.id != id);
|
||||
return cb(null, "ok");
|
||||
}
|
||||
|
||||
public static changeRole(request:any,cb:(error: any,result:string) => void){
|
||||
return cb(null,"ok");
|
||||
}
|
||||
public static changePassword(request:any,cb:(error: any,result:string) => void){
|
||||
return cb(null,"ok");
|
||||
}
|
||||
|
||||
}
|
14
backend/model/memory/GalleryManager.ts
Normal file
14
backend/model/memory/GalleryManager.ts
Normal file
@ -0,0 +1,14 @@
|
||||
import {Directory} from "../../../common/entities/Directory";
|
||||
import {IGalleryManager} from "../IGalleryManager";
|
||||
import {DiskManager} from "../DiskManger";
|
||||
|
||||
export class GalleryManager implements IGalleryManager{
|
||||
|
||||
|
||||
public listDirectory(relativeDirectoryName, cb:(error: any,result:Directory) => void){
|
||||
return DiskManager.scanDirectory(relativeDirectoryName,cb);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
33
backend/model/memory/UserManager.ts
Normal file
33
backend/model/memory/UserManager.ts
Normal file
@ -0,0 +1,33 @@
|
||||
import {User} from "../../../common/entities/User";
|
||||
import {IUserManager} from "../IUserManager";
|
||||
export class UserManager implements IUserManager{
|
||||
|
||||
private users = [new User(1,"TestUser","test@test.hu","122345")];
|
||||
|
||||
public findOne(filter,cb:(error: any,result:User) => void){
|
||||
return cb(null, this.users[0]);
|
||||
}
|
||||
|
||||
public find(filter,cb:(error: any,result:Array<User>) => void){
|
||||
return cb(null, this.users);
|
||||
}
|
||||
|
||||
public createUser(user,cb:(error: any,result:User) => void){
|
||||
|
||||
this.users.push(user);
|
||||
return cb(null, user);
|
||||
}
|
||||
|
||||
public deleteUser(id:number,cb:(error: any) => void){
|
||||
this.users = this.users.filter(u => u.id != id);
|
||||
return cb(null);
|
||||
}
|
||||
|
||||
public changeRole(request:any,cb:(error: any,result:string) => void){
|
||||
throw new Error("not implemented"); //TODO: implement
|
||||
}
|
||||
public changePassword(request:any,cb:(error: any,result:string) => void){
|
||||
throw new Error("not implemented"); //TODO: implement
|
||||
}
|
||||
|
||||
}
|
42
backend/model/mongoose/DatabaseManager.ts
Normal file
42
backend/model/mongoose/DatabaseManager.ts
Normal file
@ -0,0 +1,42 @@
|
||||
import * as mongoose from 'mongoose';
|
||||
import {Schema} from "mongoose";
|
||||
export class DatabaseManager{
|
||||
private static _instance:DatabaseManager = null;
|
||||
private connectionError = false;
|
||||
|
||||
constructor(onError?:(err)=>void){
|
||||
mongoose.connection.on('error', function (err) {
|
||||
this.connectionError = true;
|
||||
if(onError){
|
||||
onError(err);
|
||||
}
|
||||
});
|
||||
try {
|
||||
mongoose.connect('mongodb://localhost/EQZT6L');
|
||||
}catch(ex){
|
||||
this.connectionError = true;
|
||||
if(onError){
|
||||
onError(ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static getInstance(onError?:(err)=>void){
|
||||
if(DatabaseManager._instance === null){
|
||||
DatabaseManager._instance = new DatabaseManager(onError);
|
||||
}
|
||||
return DatabaseManager._instance;
|
||||
}
|
||||
|
||||
public getModel(name:string,schema:any){
|
||||
return mongoose.model(name,new Schema(schema));
|
||||
}
|
||||
|
||||
public disconnect(){
|
||||
mongoose.disconnect();
|
||||
}
|
||||
|
||||
public isConnectionError(){
|
||||
return this.connectionError;
|
||||
}
|
||||
}
|
80
backend/model/mongoose/MongoGalleryManager.ts
Normal file
80
backend/model/mongoose/MongoGalleryManager.ts
Normal file
@ -0,0 +1,80 @@
|
||||
import * as fs from 'fs';
|
||||
import * as path from 'path';
|
||||
import * as mime from 'mime';
|
||||
import * as sizeOf from 'image-size';
|
||||
import {Schema} from "mongoose";
|
||||
|
||||
import {Directory} from "../../../common/entities/Directory";
|
||||
import {Photo} from "../../../common/entities/Photo";
|
||||
import {IGalleryManager} from "../IGalleryManager";
|
||||
import {DatabaseManager} from "./DatabaseManager";
|
||||
import {DiskManager} from "../DiskManger";
|
||||
import {Utils} from "../../../common/Utils";
|
||||
|
||||
export class MongoGalleryManager implements IGalleryManager{
|
||||
private DirectoryModel;
|
||||
private PhotoModel;
|
||||
|
||||
constructor(){
|
||||
this.DirectoryModel = DatabaseManager.getInstance().getModel('directory',{
|
||||
name:String,
|
||||
path:String,
|
||||
lastUpdate:Date,
|
||||
directories: [{
|
||||
type: Schema.Types.ObjectId,
|
||||
ref: 'directory'
|
||||
}],
|
||||
photos: [{
|
||||
type: Schema.Types.ObjectId,
|
||||
ref: 'photo'
|
||||
}]
|
||||
});
|
||||
this.PhotoModel = DatabaseManager.getInstance().getModel('photo',{
|
||||
name:String,
|
||||
width:Number,
|
||||
height:Number
|
||||
});
|
||||
}
|
||||
|
||||
public listDirectory(relativeDirectoryName, cb:(error: any,result:Directory) => void){
|
||||
let directoryName = path.basename(relativeDirectoryName);
|
||||
let directoryParent = path.join( path.dirname(relativeDirectoryName),"/");
|
||||
|
||||
this.DirectoryModel.findOne({name:directoryName, path: directoryParent}).populate('photos').populate('directories').exec( (err,res) =>{
|
||||
if(err || !res){
|
||||
return this.indexDirectory(relativeDirectoryName,cb);
|
||||
}
|
||||
return cb(err,res);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
public indexDirectory(relativeDirectoryName, cb:(error: any,result:Directory) => void){
|
||||
DiskManager.scanDirectory(relativeDirectoryName,(err,scannedDirectory)=>{
|
||||
let arr = [];
|
||||
scannedDirectory.directories.forEach((value) => {
|
||||
let dir = new this.DirectoryModel(value);
|
||||
Utils.setKeys(dir,value);
|
||||
dir.save();
|
||||
arr.push(dir);
|
||||
});
|
||||
scannedDirectory.directories = arr;
|
||||
arr = [];
|
||||
scannedDirectory.photos.forEach((value) => {
|
||||
let p = new this.PhotoModel(value);
|
||||
Utils.setKeys(p,value);
|
||||
p.save();
|
||||
arr.push(p);
|
||||
});
|
||||
|
||||
scannedDirectory.photos = arr;
|
||||
this.DirectoryModel.create(scannedDirectory,(err)=>{
|
||||
return cb(err,scannedDirectory);
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
45
backend/model/mongoose/MongoUserManager.ts
Normal file
45
backend/model/mongoose/MongoUserManager.ts
Normal file
@ -0,0 +1,45 @@
|
||||
import {User} from "../../../common/entities/User";
|
||||
import {IUserManager} from "../IUserManager";
|
||||
import {DatabaseManager} from "./DatabaseManager";
|
||||
|
||||
export class MongoUserManager implements IUserManager{
|
||||
|
||||
private UserModel;
|
||||
|
||||
constructor(){
|
||||
this.UserModel = DatabaseManager.getInstance().getModel('user',{
|
||||
name:String,
|
||||
email:{ type: String, index: { unique: true }},
|
||||
password:String,
|
||||
role:Number
|
||||
});
|
||||
}
|
||||
|
||||
public findOne(filter,cb:(error: any,result:User) => void){
|
||||
return this.UserModel.findOne(filter,function (err, result) {
|
||||
return cb(err, result);
|
||||
});
|
||||
}
|
||||
|
||||
public find(filter,cb:(error: any,result:Array<User>) => void){
|
||||
this.UserModel.find(filter,function (err, result) {
|
||||
return cb(err, result);
|
||||
});
|
||||
}
|
||||
|
||||
public createUser(user,cb:(error: any,result:User) => void){
|
||||
this.UserModel.create(user,cb);
|
||||
}
|
||||
|
||||
public deleteUser(id:number,cb:(error: any) => void){
|
||||
this.UserModel.remove({id:id},cb);
|
||||
}
|
||||
|
||||
public changeRole(request:any,cb:(error: any,result:string) => void){
|
||||
throw new Error("not implemented"); //TODO: implement
|
||||
}
|
||||
public changePassword(request:any,cb:(error: any,result:string) => void){
|
||||
throw new Error("not implemented"); //TODO: implement
|
||||
}
|
||||
|
||||
}
|
@ -6,6 +6,7 @@ export class ErrorRouter{
|
||||
constructor(private app) {
|
||||
|
||||
this.addApiErrorHandler();
|
||||
this.addGenericHandler();
|
||||
}
|
||||
|
||||
private addApiErrorHandler() {
|
||||
|
@ -11,7 +11,11 @@ import {GalleryRouter} from "./routes/GalleryRouter";
|
||||
import {AdminRouter} from "./routes/AdminRouter";
|
||||
import {ErrorRouter} from "./routes/ErrorRouter";
|
||||
import {SharingRouter} from "./routes/SharingRouter";
|
||||
import {Config} from "./config/Config";
|
||||
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";
|
||||
|
||||
|
||||
export class Server {
|
||||
@ -52,10 +56,21 @@ export class Server {
|
||||
*/
|
||||
// for parsing application/json
|
||||
this.app.use(_bodyParser.json());
|
||||
|
||||
|
||||
|
||||
|
||||
if(Config.databaseType === DatabaseType.memory){
|
||||
ObjectManagerRepository.MemoryMongoManagers();
|
||||
}else {
|
||||
if (DatabaseManager.getInstance(()=>{
|
||||
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);
|
||||
|
||||
|
@ -19,4 +19,27 @@ export class Utils {
|
||||
return url.substring(0, url.length - 1);
|
||||
}
|
||||
|
||||
public static updateKeys(targetObject,sourceObject){
|
||||
Object.keys(sourceObject).forEach((key)=> {
|
||||
if(typeof targetObject[key] === "undefined"){
|
||||
return;
|
||||
}
|
||||
if(typeof targetObject[key] === "object"){
|
||||
Utils.updateKeys(targetObject[key],sourceObject[key] );
|
||||
}else {
|
||||
targetObject[key] = sourceObject[key];
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public static setKeys(targetObject,sourceObject){
|
||||
Object.keys(sourceObject).forEach((key)=> {
|
||||
if(typeof targetObject[key] === "object"){
|
||||
Utils.updateKeys(targetObject[key],sourceObject[key] );
|
||||
}else {
|
||||
targetObject[key] = sourceObject[key];
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
|
||||
export class Photo{
|
||||
constructor(public id:number,public name:string,public width:number,public height:number){}
|
||||
export class Photo {
|
||||
constructor(public id:number, public name:string, public width:number, public height:number) {
|
||||
}
|
||||
}
|
@ -2,7 +2,6 @@
|
||||
|
||||
<md-sidenav name="menu" align="left" layout="column">
|
||||
<md-toolbar class="md-theme-light">
|
||||
<img width="25px" src="/icon.png"/>
|
||||
<h1 class="md-toolbar-tools">PiGallery2</h1>
|
||||
</md-toolbar>
|
||||
<md-content layout-padding>
|
||||
|
@ -14,7 +14,7 @@
|
||||
<md-input-container class="md-block" flex-gt-sm>
|
||||
<label>Password</label>
|
||||
<input md-input type="password" [(value)]="loginCredential.password"
|
||||
ngControl="name" #name="ngForm" required>
|
||||
ngControl="password" #name="ngForm" required>
|
||||
</md-input-container>
|
||||
</form>
|
||||
</md-card-content>
|
||||
|
14
package.json
14
package.json
@ -8,10 +8,11 @@
|
||||
"license": "MIT",
|
||||
"main": "./backend/server.js",
|
||||
"scripts": {
|
||||
"install": "typings install && tsc -p backend && tsc -p common && webpack --config ./frontend/webpack.config.js ",
|
||||
"install": "typings install && tsc -p backend && tsc -p test/backend && tsc -p common && webpack --config ./frontend/webpack.config.js ",
|
||||
"pretest": "typings install",
|
||||
"test": "karma start ./karma.conf.js",
|
||||
"start": "node ./backend/server"
|
||||
"start": "node ./backend/server",
|
||||
"postinstall": "node ./test/backend/initMongo.js"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@ -30,9 +31,10 @@
|
||||
"express-session": "^1.13.0",
|
||||
"html-webpack-plugin": "^2.16.0",
|
||||
"image-size": "^0.5.0",
|
||||
"jimp": "^0.2.21",
|
||||
"karma-mocha-reporter": "^2.0.1",
|
||||
"jimp": "^0.2.22",
|
||||
"karma-mocha-reporter": "^2.0.2",
|
||||
"mime": "^1.3.4",
|
||||
"mongoose": "^4.4.13",
|
||||
"morgan": "^1.7.0",
|
||||
"ng2-cookies": "^0.1.5",
|
||||
"ng2-material": "^0.3.6",
|
||||
@ -41,11 +43,11 @@
|
||||
"rxjs": "5.0.0-beta.2",
|
||||
"style-loader": "^0.13.1",
|
||||
"ts-loader": "^0.8.2",
|
||||
"tslint": "^3.7.4",
|
||||
"tslint": "^3.8.0",
|
||||
"typescript": "^1.8.10",
|
||||
"typings": "^0.7.9",
|
||||
"webpack": "^1.13.0",
|
||||
"zone.js": "^0.6.11"
|
||||
"zone.js": "^0.6.12"
|
||||
},
|
||||
"devDependencies": {
|
||||
"compression-webpack-plugin": "^0.3.0",
|
||||
|
8
test/backend/initMongo.ts
Normal file
8
test/backend/initMongo.ts
Normal file
@ -0,0 +1,8 @@
|
||||
|
||||
import {MongoUserManager} from "../../backend/model/mongoose/MongoUserManager";
|
||||
import {User, UserRoles} from "../../common/entities/User";
|
||||
import {DatabaseManager} from "../../backend/model/mongoose/DatabaseManager";
|
||||
let userManager = new MongoUserManager();
|
||||
userManager.createUser(new User(0,"demo","demo@demo.hu","demo",UserRoles.Developer),(err)=>{
|
||||
DatabaseManager.getInstance().disconnect();
|
||||
});
|
@ -9,6 +9,7 @@
|
||||
"image-size": "registry:dt/image-size#0.0.0+20160223165602",
|
||||
"jasmine": "github:DefinitelyTyped/DefinitelyTyped/jasmine/jasmine.d.ts#d22516f9f089de107d7e7d5938566377370631f6",
|
||||
"mime": "github:DefinitelyTyped/DefinitelyTyped/mime/mime.d.ts#0d622d857f97d44ea7dcad2b3edec1f23c48fe9e",
|
||||
"mongoose": "registry:dt/mongoose#3.8.5+20160316155526",
|
||||
"node": "github:DefinitelyTyped/DefinitelyTyped/node/node.d.ts#0d622d857f97d44ea7dcad2b3edec1f23c48fe9e",
|
||||
"optimist": "registry:dt/optimist#0.0.0+20160316171810",
|
||||
"serve-static": "github:DefinitelyTyped/DefinitelyTyped/serve-static/serve-static.d.ts#0d622d857f97d44ea7dcad2b3edec1f23c48fe9e"
|
||||
|
Loading…
x
Reference in New Issue
Block a user