Jeobeardy/src/server/controllers/BoardControllerMongoose.js

100 lines
2.6 KiB
JavaScript

const BoardModel = require("../models/BoardModel");
const ImageModel = require("../models/ImageModel");
exports.listBoards = (req, res) => {
return new Promise((resolve, reject) => {
BoardModel.find({})
.then((boards) => {
resolve(boards);
})
.catch((err) => {
reject( err );
});
});
};
exports.findBoard = ( boardId ) => {
return new Promise((resolve, reject) => {
BoardModel.findOne({ _id: boardId })
.then( ( board ) => {
if( board === null ){
let userNotFoundError = new Error(`No board found with id "${boardId}"`);
userNotFoundError.name = "NotFoundError";
throw userNotFoundError;
} else {
resolve( board );
}
})
.catch( ( err ) => {
reject ( err );
});
});
};
exports.isBoardFromUser = ( boardId, userId ) => {
return new Promise((resolve, reject) => {
BoardModel.findOne({ _id: boardId, ownerId: userId })
.then( ( board ) => {
resolve( board !== null );
})
.catch( ( err ) => {
reject ( err );
});
});
};
exports.addBoard = ( postObject, ownerId ) => {
return new Promise((resolve, reject) => {
BoardModel.findOne({ _id: postObject.boardId })
.then( ( board ) => {
if ( board === null ) {
//TODO validate postObject at some point!
let newBoard = new BoardModel({
ownerId: ownerId,
name: postObject.boardName,
categories: postObject.categories,
options: postObject.options,
});
return newBoard.save();
} else {
board.setFromPostObject = postObject;
return board.save();
}
})
.then( ( board ) => {
resolve( board );
})
.catch((err) => {
reject( err );
});
});
};
exports.addUploadedImages = ( imagesArray, ownerId ) => {
return new Promise((resolve, reject) => {
let imageArray = [];
for( let iIdx in imagesArray ){
let imageIndex = Number(iIdx);
let indices = imagesArray[imageIndex].originalname.split(":");
let image = new ImageModel({
ownerId: ownerId,
categoryIndex: indices[0],
boardEntryIndex: indices[1],
questionIndex: indices[2],
filename: imagesArray[imageIndex].filename,
});
imageArray.push( image );
}
ImageModel.bulkSave( imageArray )
.then( ( images ) => {
if( images ){
resolve( images );
}
reject( new Error("Error while persisting image References") );
} )
.catch( ( err ) => {
reject( err );
})
});
};