forked from dbroqua/MusicTopus
@93 - Wantlist
This commit is contained in:
parent
bed5139a27
commit
a4a3933c6d
24 changed files with 1137 additions and 70 deletions
84
src/routes/api/v1/wantlist.js
Normal file
84
src/routes/api/v1/wantlist.js
Normal file
|
@ -0,0 +1,84 @@
|
|||
import express from "express";
|
||||
import { ensureLoggedIn } from "connect-ensure-login";
|
||||
|
||||
import { sendResponse } from "../../../libs/format";
|
||||
import Albums from "../../../middleware/Wantlist";
|
||||
|
||||
// eslint-disable-next-line new-cap
|
||||
const router = express.Router();
|
||||
|
||||
router
|
||||
.route("/")
|
||||
.get(async (req, res, next) => {
|
||||
try {
|
||||
const albums = new Albums(req, null);
|
||||
const data = await albums.getAll();
|
||||
const { exportFormat = "json" } = req.query;
|
||||
|
||||
switch (exportFormat) {
|
||||
case "csv":
|
||||
case "musictopus":
|
||||
res.header("Content-Type", "text/csv");
|
||||
res.attachment("export-musictopus.csv");
|
||||
return res.status(200).send(data);
|
||||
case "xml":
|
||||
res.header("Content-type", "text/xml");
|
||||
res.attachment("export-musictopus.xml");
|
||||
return res.status(200).send(data);
|
||||
case "xls":
|
||||
return data.write("musictopus.xls", res);
|
||||
case "json":
|
||||
default:
|
||||
return sendResponse(req, res, data);
|
||||
}
|
||||
} catch (err) {
|
||||
return next(err);
|
||||
}
|
||||
})
|
||||
.post(ensureLoggedIn("/connexion"), async (req, res, next) => {
|
||||
try {
|
||||
const data = await Albums.postAddOne(req);
|
||||
|
||||
sendResponse(req, res, data);
|
||||
} catch (err) {
|
||||
next(err);
|
||||
}
|
||||
});
|
||||
|
||||
router
|
||||
.route("/:itemId")
|
||||
.patch(ensureLoggedIn("/connexion"), async (req, res, next) => {
|
||||
try {
|
||||
const albums = new Albums(req, null);
|
||||
const data = await albums.patchOne();
|
||||
|
||||
sendResponse(req, res, data);
|
||||
} catch (err) {
|
||||
next(err);
|
||||
}
|
||||
})
|
||||
.delete(ensureLoggedIn("/connexion"), async (req, res, next) => {
|
||||
try {
|
||||
const albums = new Albums(req, null);
|
||||
const data = await albums.deleteOne();
|
||||
|
||||
sendResponse(req, res, data);
|
||||
} catch (err) {
|
||||
next(err);
|
||||
}
|
||||
});
|
||||
|
||||
router
|
||||
.route("/:itemId/share")
|
||||
.post(ensureLoggedIn("/connexion"), async (req, res, next) => {
|
||||
try {
|
||||
const albums = new Albums(req, null);
|
||||
const data = await albums.shareOne();
|
||||
|
||||
sendResponse(req, res, data);
|
||||
} catch (err) {
|
||||
next(err);
|
||||
}
|
||||
});
|
||||
|
||||
export default router;
|
|
@ -104,8 +104,23 @@ router
|
|||
try {
|
||||
const page = new Pages(req, "ajouter-un-album");
|
||||
|
||||
page.setPageContent("action", "albums");
|
||||
page.setPageTitle("Ajouter un album");
|
||||
|
||||
render(res, page);
|
||||
} catch (err) {
|
||||
next(err);
|
||||
}
|
||||
});
|
||||
router
|
||||
.route("/ajouter-a-ma-liste-de-souhaits")
|
||||
.get(ensureLoggedIn("/connexion"), (req, res, next) => {
|
||||
try {
|
||||
const page = new Pages(req, "ajouter-un-album");
|
||||
|
||||
page.setPageContent("action", "wantlist");
|
||||
page.setPageTitle("Ajouter un album à ma liste de souhaits");
|
||||
|
||||
render(res, page);
|
||||
} catch (err) {
|
||||
next(err);
|
||||
|
|
99
src/routes/wantlist.js
Normal file
99
src/routes/wantlist.js
Normal file
|
@ -0,0 +1,99 @@
|
|||
import express from "express";
|
||||
import { ensureLoggedIn } from "connect-ensure-login";
|
||||
|
||||
import Albums from "../middleware/Wantlist";
|
||||
|
||||
import render from "../libs/format";
|
||||
|
||||
// eslint-disable-next-line new-cap
|
||||
const router = express.Router();
|
||||
|
||||
router.route("/").get(ensureLoggedIn("/connexion"), async (req, res, next) => {
|
||||
try {
|
||||
const page = new Albums(req, "collection");
|
||||
|
||||
await page.loadMyCollection();
|
||||
|
||||
if (page.getPageContent("artists").length > 0) {
|
||||
render(res, page);
|
||||
} else {
|
||||
res.redirect("/ajouter-a-ma-liste-de-souhaits");
|
||||
}
|
||||
} catch (err) {
|
||||
next(err);
|
||||
}
|
||||
});
|
||||
|
||||
router
|
||||
.route("/on-air")
|
||||
.get(ensureLoggedIn("/connexion"), async (req, res, next) => {
|
||||
try {
|
||||
const page = new Albums(req, "mon-compte/ma-collection/details");
|
||||
|
||||
await page.onAir();
|
||||
|
||||
render(res, page);
|
||||
} catch (err) {
|
||||
next(err);
|
||||
}
|
||||
});
|
||||
|
||||
router
|
||||
.route("/statistiques")
|
||||
.get(ensureLoggedIn("/connexion"), async (req, res, next) => {
|
||||
try {
|
||||
const page = new Albums(
|
||||
req,
|
||||
"mon-compte/ma-collection/statistiques"
|
||||
);
|
||||
|
||||
await page.statistics();
|
||||
|
||||
render(res, page);
|
||||
} catch (err) {
|
||||
next(err);
|
||||
}
|
||||
});
|
||||
|
||||
router
|
||||
.route("/exporter")
|
||||
.get(ensureLoggedIn("/connexion"), async (req, res, next) => {
|
||||
try {
|
||||
const page = new Albums(req, "mon-compte/ma-collection/exporter");
|
||||
|
||||
page.setPageTitle("Exporter ma collection");
|
||||
|
||||
render(res, page);
|
||||
} catch (err) {
|
||||
next(err);
|
||||
}
|
||||
});
|
||||
router
|
||||
.route("/importer")
|
||||
.get(ensureLoggedIn("/connexion"), async (req, res, next) => {
|
||||
try {
|
||||
const page = new Albums(req, "mon-compte/ma-collection/importer");
|
||||
|
||||
page.setPageTitle("Importer une collection");
|
||||
|
||||
render(res, page);
|
||||
} catch (err) {
|
||||
next(err);
|
||||
}
|
||||
});
|
||||
|
||||
router
|
||||
.route("/:itemId")
|
||||
.get(ensureLoggedIn("/connexion"), async (req, res, next) => {
|
||||
try {
|
||||
const page = new Albums(req, "mon-compte/ma-collection/details");
|
||||
|
||||
await page.loadItem();
|
||||
|
||||
render(res, page);
|
||||
} catch (err) {
|
||||
next(err);
|
||||
}
|
||||
});
|
||||
|
||||
export default router;
|
Loading…
Add table
Add a link
Reference in a new issue