forked from dbroqua/MusicTopus
Added method for delete item in collection
This commit is contained in:
parent
8b3719c332
commit
fdf812f6a7
5 changed files with 103 additions and 63 deletions
|
@ -2,70 +2,18 @@ import moment from "moment";
|
|||
|
||||
import Pages from "./Pages";
|
||||
|
||||
import { getAlbumDetails } from "../helpers";
|
||||
|
||||
import AlbumsModel from "../models/albums";
|
||||
import ErrorEvent from "../libs/error";
|
||||
|
||||
/**
|
||||
* Classe permettant la gestion des albums d'un utilisateur
|
||||
*/
|
||||
class Albums extends Pages {
|
||||
async getFormAddOne() {
|
||||
const data = await getAlbumDetails(this.req.params.discogsId);
|
||||
|
||||
const {
|
||||
id, // Integer
|
||||
year, // - Integer
|
||||
uri, // String
|
||||
artists, // - Array<Object>
|
||||
artists_sort, // String
|
||||
labels, // - Array<Object>
|
||||
series, // Array
|
||||
companies, // - Array<Object>
|
||||
formats, // - Array<Object>
|
||||
title, // - String
|
||||
country, // - String
|
||||
released, // - Date
|
||||
notes, // - String
|
||||
identifiers, // - Array<Object>
|
||||
videos, // - Array<Object>
|
||||
genres, // - Array<String>
|
||||
styles, // - Array<String>
|
||||
tracklist, // - Array<Object>
|
||||
extraartists, // - Array<Object>
|
||||
images, // - Array<Object
|
||||
thumb, // - String
|
||||
} = data;
|
||||
|
||||
this.pageContent.page.values = "test";
|
||||
|
||||
this.setPageContent("values", {
|
||||
id,
|
||||
year,
|
||||
uri,
|
||||
artists,
|
||||
artists_sort,
|
||||
labels,
|
||||
series,
|
||||
companies,
|
||||
formats,
|
||||
title,
|
||||
country,
|
||||
released,
|
||||
notes,
|
||||
identifiers,
|
||||
videos,
|
||||
genres,
|
||||
styles,
|
||||
tracklist,
|
||||
extraartists,
|
||||
images,
|
||||
thumb,
|
||||
});
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Méthode permettant d'ajouter un album dans une collection
|
||||
* @param {Object} req
|
||||
* @return {Object}
|
||||
*/
|
||||
static async postAddOne(req) {
|
||||
const { body, user } = req;
|
||||
const data = {
|
||||
|
@ -83,8 +31,14 @@ class Albums extends Pages {
|
|||
return album.save();
|
||||
}
|
||||
|
||||
/**
|
||||
* Méthode permettant de récupérer les éléments distincts d'une collection
|
||||
* @param {String} field
|
||||
* @param {ObjectId} user
|
||||
* @return {Array}
|
||||
*/
|
||||
static async getAllDistincts(field, user) {
|
||||
const artists = await AlbumsModel.find(
|
||||
const distincts = await AlbumsModel.find(
|
||||
{
|
||||
user,
|
||||
},
|
||||
|
@ -96,9 +50,13 @@ class Albums extends Pages {
|
|||
}
|
||||
).distinct(field);
|
||||
|
||||
return artists;
|
||||
return distincts;
|
||||
}
|
||||
|
||||
/**
|
||||
* Méthode permettant de récupérer la liste des albums d'une collection
|
||||
* @return {Object}
|
||||
*/
|
||||
async getAll() {
|
||||
const {
|
||||
page = 1,
|
||||
|
@ -146,6 +104,26 @@ class Albums extends Pages {
|
|||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Méthode permettant de supprimer un élément d'une collection
|
||||
* @return {Boolean}
|
||||
*/
|
||||
async deleteOne() {
|
||||
const res = await AlbumsModel.findOneAndDelete({
|
||||
user: this.req.user._id,
|
||||
_id: this.req.params.itemId,
|
||||
});
|
||||
|
||||
if (res) {
|
||||
return true;
|
||||
}
|
||||
|
||||
throw new ErrorEvent(404, "Impossible de trouver cet album");
|
||||
}
|
||||
|
||||
/**
|
||||
* Méthode permettant de créer la page "ma-collection"
|
||||
*/
|
||||
async loadMyCollection() {
|
||||
const artists = await Albums.getAllDistincts(
|
||||
"artists_sort",
|
||||
|
|
|
@ -29,4 +29,17 @@ router
|
|||
}
|
||||
});
|
||||
|
||||
router
|
||||
.route("/:itemId")
|
||||
.delete(ensureLoggedIn("/connexion"), async (req, res, next) => {
|
||||
try {
|
||||
const albums = new Albums(req);
|
||||
const data = await albums.deleteOne();
|
||||
|
||||
sendResponse(req, res, data);
|
||||
} catch (err) {
|
||||
next(err);
|
||||
}
|
||||
});
|
||||
|
||||
export default router;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue