Added method for delete item in collection

This commit is contained in:
Damien Broqua 2022-02-20 21:52:47 +01:00
parent 8b3719c332
commit fdf812f6a7
5 changed files with 103 additions and 63 deletions

View file

@ -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",

View file

@ -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;