Damien Broqua
b27a81a0b6
Co-authored-by: dbroqua <contact@darkou.fr> Reviewed-on: #28 Co-authored-by: Damien Broqua <dbroqua@noreply.localhost> Co-committed-by: Damien Broqua <dbroqua@noreply.localhost>
60 lines
1.7 KiB
JavaScript
60 lines
1.7 KiB
JavaScript
import express from "express";
|
|
import { ensureLoggedIn } from "connect-ensure-login";
|
|
|
|
import { sendResponse } from "../../../libs/format";
|
|
import Albums from "../../../middleware/Albums";
|
|
|
|
// eslint-disable-next-line new-cap
|
|
const router = express.Router();
|
|
|
|
router
|
|
.route("/")
|
|
.get(ensureLoggedIn("/connexion"), async (req, res, next) => {
|
|
try {
|
|
const albums = new Albums(req);
|
|
const data = await albums.getAll();
|
|
const { exportFormat = "json" } = req.query;
|
|
|
|
switch (exportFormat) {
|
|
case "csv":
|
|
case "musictopus":
|
|
res.header("Content-Type", "text/csv");
|
|
return res.status(200).send(data);
|
|
case "xml":
|
|
res.header("Content-type", "text/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")
|
|
.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;
|