From 9f1badc1b1740406f8546f7708dea3e65791f236 Mon Sep 17 00:00:00 2001 From: Kevin Midboe Date: Fri, 28 Jun 2019 19:21:54 +0200 Subject: [PATCH] Get a request item by id and type --- seasoned_api/src/request/request.js | 18 ++++++++++++++- seasoned_api/src/webserver/app.js | 1 + .../controllers/request/getRequest.js | 22 +++++++++++++++++++ 3 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 seasoned_api/src/webserver/controllers/request/getRequest.js diff --git a/seasoned_api/src/request/request.js b/seasoned_api/src/request/request.js index f4ce7d7..e77f016 100644 --- a/seasoned_api/src/request/request.js +++ b/seasoned_api/src/request/request.js @@ -20,7 +20,7 @@ class RequestRepository { downloaded: '(select status from requests where id is request.id and type is request.type limit 1)', // deluge: '(select status from deluge_torrent where id is request.id and type is request.type limit 1)', // fetchAllFilterStatus: 'select * from request where ' - read: 'select * from request where id is ? and type is ?' + read: 'select id, title, year, type, status, requested_by, ip, date, user_agent from requests where id is ? and type is ?' }; } @@ -96,6 +96,22 @@ class RequestRepository { }); } + /** + * Get request item by id + * @param {String} id + * @param {String} type + * @returns {Promise} + */ + getRequestByIdAndType(id, type) { + console.log('id & type', id, type) + return Promise.resolve() + .then(() => this.database.get(this.queries.read, [id, type])) + .then(row => { + assert(row, 'Could not find request item with that id and type') + return JSON.stringify(row) + }) + } + /** * Fetch all requests with optional sort and filter params * @param {String} what we are sorting by diff --git a/seasoned_api/src/webserver/app.js b/seasoned_api/src/webserver/app.js index 61aa040..cb84124 100644 --- a/seasoned_api/src/webserver/app.js +++ b/seasoned_api/src/webserver/app.js @@ -102,6 +102,7 @@ router.post('/v1/plex/hook', require('./controllers/plex/hookDump.js')); */ router.get('/v2/request', require('./controllers/request/fetchAllRequests.js')); +router.get('/v2/request/:id', require('./controllers/request/getRequest.js')); router.post('/v2/request', require('./controllers/request/requestTmdbId.js')); router.get('/v1/plex/requests/all', require('./controllers/plex/fetchRequested.js')); router.put('/v1/plex/request/:requestId', mustBeAuthenticated, require('./controllers/plex/updateRequested.js')); diff --git a/seasoned_api/src/webserver/controllers/request/getRequest.js b/seasoned_api/src/webserver/controllers/request/getRequest.js new file mode 100644 index 0000000..2420211 --- /dev/null +++ b/seasoned_api/src/webserver/controllers/request/getRequest.js @@ -0,0 +1,22 @@ +const RequestRepository = require('src/request/request'); +const request = new RequestRepository(); + +/** + * Controller: Get requested item by tmdb id and type + * @param {Request} req http request variable + * @param {Response} res + * @returns {Callback} + */ +function fetchAllRequests(req, res) { + const id = req.params.id; + const { type } = req.query; + + Promise.resolve() + .then(() => request.getRequestByIdAndType(id, type)) + .then((result) => res.send(result)) + .catch((error) => { + res.status(404).send({ success: false, error: error.message }); + }); +} + +module.exports = fetchAllRequests;