63 lines
1.6 KiB
JavaScript
63 lines
1.6 KiB
JavaScript
import express from "express";
|
|
import { ensureLoggedIn } from "connect-ensure-login";
|
|
|
|
import { sendResponse } from "../../../libs/format";
|
|
import { searchSong, getAlbumDetails } from "../../../helpers";
|
|
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 data = await searchSong(
|
|
req.query.q,
|
|
req.query.format || null,
|
|
req.query.year || null,
|
|
req.query.country || null
|
|
);
|
|
|
|
const discogsIds = [];
|
|
const foundIds = [];
|
|
|
|
for (let i = 0; i < data.results.length; i += 1) {
|
|
discogsIds.push(data.results[i].id);
|
|
}
|
|
|
|
req.query.discogsIds = discogsIds;
|
|
|
|
const albums = new Albums(req);
|
|
const myAlbums = await albums.getAll();
|
|
|
|
if (myAlbums.rows) {
|
|
for (let i = 0; i < myAlbums.rows.length; i += 1) {
|
|
foundIds.push(myAlbums.rows[i].discogsId);
|
|
}
|
|
}
|
|
|
|
for (let i = 0; i < data.results.length; i += 1) {
|
|
data.results[i].inCollection = foundIds.includes(
|
|
data.results[i].id
|
|
);
|
|
}
|
|
|
|
sendResponse(req, res, data);
|
|
} catch (err) {
|
|
next(err);
|
|
}
|
|
});
|
|
|
|
router
|
|
.route("/:discogsId")
|
|
.get(ensureLoggedIn("/connexion"), async (req, res, next) => {
|
|
try {
|
|
const data = await getAlbumDetails(req.params.discogsId);
|
|
|
|
sendResponse(req, res, data);
|
|
} catch (err) {
|
|
next(err);
|
|
}
|
|
});
|
|
|
|
export default router;
|