121 lines
2.8 KiB
JavaScript
121 lines
2.8 KiB
JavaScript
import moment from "moment";
|
|
|
|
import Pages from "./Pages";
|
|
|
|
import { getAlbumDetails } from "../helpers";
|
|
|
|
import AlbumsModel from "../models/albums";
|
|
|
|
/**
|
|
* 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;
|
|
}
|
|
|
|
static async postAddOne(req) {
|
|
const { body, user } = req;
|
|
const data = {
|
|
...body,
|
|
discogsId: body.id,
|
|
User: user._id,
|
|
};
|
|
data.released = data.released
|
|
? moment(data.released.replace("-00", "-01"))
|
|
: null;
|
|
delete data.id;
|
|
|
|
const album = new AlbumsModel(data);
|
|
|
|
return album.save();
|
|
}
|
|
|
|
async getAll() {
|
|
const {
|
|
page = 1,
|
|
limit = 4,
|
|
sort = "artists_sort",
|
|
order = "asc",
|
|
} = this.req.query;
|
|
|
|
const skip = (page - 1) * limit;
|
|
|
|
const count = await AlbumsModel.count({
|
|
user: this.req.user._id,
|
|
});
|
|
|
|
const rows = await AlbumsModel.find(
|
|
{
|
|
user: this.req.user._id,
|
|
},
|
|
[],
|
|
{
|
|
skip,
|
|
limit,
|
|
sort: {
|
|
[sort]: order.toLowerCase() === "asc" ? 1 : -1,
|
|
},
|
|
}
|
|
);
|
|
|
|
return {
|
|
rows,
|
|
count,
|
|
};
|
|
}
|
|
}
|
|
|
|
export default Albums;
|