From af00a032e09e2914fe1cadf89c6e3b9c13dcb0ed Mon Sep 17 00:00:00 2001 From: Florian Sylvain Date: Wed, 11 Jan 2023 10:35:14 +0100 Subject: [PATCH] Added queries to shows GET route --- routes/shows.js | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/routes/shows.js b/routes/shows.js index 1081df1..c050c51 100644 --- a/routes/shows.js +++ b/routes/shows.js @@ -5,12 +5,33 @@ import createHttpError from 'http-errors' const prisma = new PrismaClient() export const showsRouter = express.Router() +function pushQueryToFilter(filter, keyValueQuery) { + if (keyValueQuery.value === undefined) return; + if (filter.where == undefined) { + filter.where = {} + } + + filter.where[keyValueQuery.key] = { + [keyValueQuery.query]: keyValueQuery.query === 'contains' ? + keyValueQuery.value.toString() : parseInt(keyValueQuery.value) + } +} + showsRouter.get('/', function (req, res, next) { - prisma.serie.findMany({ + const filter = { orderBy: { likes: 'desc' } - }) + } + + const queries = req.query + pushQueryToFilter(filter, { key: 'title', value: queries?.title, query: 'contains' }) + pushQueryToFilter(filter, { key: 'description', value: queries?.description, query: 'contains' }) + pushQueryToFilter(filter, { key: 'thumbmailURL', value: queries?.thumbmailURL, query: 'contains' }) + pushQueryToFilter(filter, { key: 'date', value: queries?.date, query: 'equals' }) + pushQueryToFilter(filter, { key: 'likes', value: queries?.likes, query: 'equals' }) + + prisma.serie.findMany(filter) .then(shows => res.send({ shows })) }) @@ -43,7 +64,7 @@ showsRouter.post('/', function (req, res, next) { }) }) -showsRouter.patch('/like/:id', function (req, res, next) { +showsRouter.patch('/:id/like/', function (req, res, next) { prisma.serie.update({ where: { title: req.params.id