139 lines
4 KiB
JavaScript
139 lines
4 KiB
JavaScript
const db = require("../models/mongodb.model");
|
|
const {sendError, sendMessage} = require ("../config/response.config");
|
|
const {checkLogin} = require("../config/sessionJWT.config");
|
|
const Playlist = db.playlists;
|
|
|
|
// Create a new Playlist
|
|
exports.create = (req, res) => {
|
|
const token = checkLogin(req, res);
|
|
if(token && req.body.name){
|
|
Playlist.exists({name: req.body.name}, function (err, docs){
|
|
if(err){
|
|
sendError(res, 500,100,err.message || "Some error occurred while checking if the Playlist already exists.", token);
|
|
} else{
|
|
if(docs === null) {
|
|
let playlist;
|
|
|
|
playlist = new Playlist({
|
|
userId: token.id,
|
|
name: req.body.name,
|
|
videoIds: req.body.videoIds ? req.body.videoIds : undefined,
|
|
isActive: req.body.isActive ? req.body.isActive : undefined
|
|
});
|
|
|
|
// Save User in the database
|
|
playlist
|
|
.save(playlist)
|
|
.then(data => {
|
|
return sendMessage(res, 21, data, token)
|
|
})
|
|
.catch(err => {
|
|
return sendError(res, 500,100,err.message || "Some error occurred while creating the Playlist.", token);
|
|
});
|
|
} else{
|
|
return sendError(res, 500, 104, err || `Playlist ${req.body.name} already exists.`, token);
|
|
}
|
|
}
|
|
});
|
|
}
|
|
};
|
|
|
|
// Retrieve all Playlist from id if admin or session id
|
|
exports.findAll = (req, res) => {
|
|
const token = checkLogin(req, res);
|
|
if(token){
|
|
let query = {};
|
|
let condition;
|
|
|
|
const playlistId = req.query.playlistId;
|
|
condition = playlistId ? playlistId : undefined;
|
|
query._id = condition;
|
|
|
|
const userId = req.query.userId;
|
|
condition = userId ? userId : undefined;
|
|
query.userId = condition;
|
|
|
|
const videoIds = req.query.videoIds;
|
|
condition = videoIds ? {$in: videoIds} : undefined;
|
|
query.videoIds = condition;
|
|
|
|
const name = req.query.name;
|
|
condition = name ? { $regex: new RegExp(name), $options: "i" } : undefined;
|
|
query.name = condition;
|
|
|
|
const isActive = req.query.isActive;
|
|
condition = isActive ? isActive : undefined;
|
|
query.isActive = condition;
|
|
|
|
const sort = req.query.sort;
|
|
if(sort !== 'undefined'){
|
|
switch (sort){
|
|
case 'asc':
|
|
condition = {name: 1};
|
|
break;
|
|
case 'desc':
|
|
condition = {name: -1};
|
|
break;
|
|
case 'createdAtAsc':
|
|
condition = {createdAt: 1};
|
|
break;
|
|
case 'createdAtDesc':
|
|
condition = {createdAt: -1};
|
|
break;
|
|
case 'updatedAtAsc':
|
|
condition = {updatedAt: 1};
|
|
break;
|
|
case 'updatedAtDesc':
|
|
condition = {updatedAt: -1};
|
|
break;
|
|
default:
|
|
condition = {name: 1};
|
|
}
|
|
}
|
|
const query_sort = {sort: condition};
|
|
|
|
// Remove undefined key
|
|
Object.keys(query).forEach(key => query[key] === undefined ? delete query[key] : {});
|
|
console.log(query);
|
|
|
|
Playlist.find(query, {}, query_sort)
|
|
.then(data => {
|
|
return sendMessage(res, 22, data, token);
|
|
})
|
|
.catch(err => {
|
|
return sendError(res,500,100,err.message || "Some error occurred while finding the Playlists.", token);
|
|
});
|
|
}
|
|
};
|
|
|
|
// Find single Playlist from id if admin or session id
|
|
exports.findOne = (req, res) => {
|
|
const token = checkLogin(req, res);
|
|
if(token){
|
|
return sendError(res, 501, -1, "Playlist.findOne not Implemented", token);
|
|
}
|
|
};
|
|
|
|
// Update a Playlist with playlist id
|
|
exports.update = (req, res) => {
|
|
const token = checkLogin(req, res);
|
|
if(token){
|
|
return sendError(res, 501, -1, "Playlist.update not Implemented", token);
|
|
}
|
|
};
|
|
|
|
// Delete a Playlist with playlist id
|
|
exports.delete = (req, res) => {
|
|
const token = checkLogin(req, res);
|
|
if(token){
|
|
return sendError(res, 501, -1, "Playlist.delete not Implemented", token);
|
|
}
|
|
};
|
|
|
|
// Delete all Playlists from id if admin or session id
|
|
exports.deleteAll = (req, res) => {
|
|
const token = checkLogin(req, res);
|
|
if(token){
|
|
return sendError(res, 501, -1, "Playlist.deleteAll not Implemented", token);
|
|
}
|
|
};
|