From e3264f5e028ce774f2614f6bc6fb76581f66dee7 Mon Sep 17 00:00:00 2001 From: C Date: Wed, 22 Feb 2023 18:17:44 +0500 Subject: [PATCH] get_titles_for_language added, celebrate input value check added --- src/controllers/title.js | 16 ++++++++++++++-- src/database/database.js | 12 +++++++++++- src/routes/title.js | 18 ++++++++++++++++-- 3 files changed, 41 insertions(+), 5 deletions(-) diff --git a/src/controllers/title.js b/src/controllers/title.js index f896239..99fdfbb 100644 --- a/src/controllers/title.js +++ b/src/controllers/title.js @@ -2,7 +2,7 @@ const database = require('../database/database.js') const not_found_error = require('../../lib/src/http/errors/not_found_error') const get_titles = async (req, res, next) => { - var titles = await database.get_titles() + var titles = await database.get_titles(req.query.start, req.query.count) if (!titles) { next(new not_found_error('titles not found')) @@ -12,6 +12,18 @@ const get_titles = async (req, res, next) => { res.json(titles) } +const get_titles_for_language = async (req, res, next) => { + var titles = await database.get_titles_for_language(req.query.start, req.query.count, req.query.language.toLowerCase()) + + if (!titles) { + next(new not_found_error('titles not found')) + return + } + + res.json(titles) +} + module.exports = { - get_titles + get_titles, + get_titles_for_language } \ No newline at end of file diff --git a/src/database/database.js b/src/database/database.js index a2445b9..2787df4 100644 --- a/src/database/database.js +++ b/src/database/database.js @@ -29,6 +29,15 @@ const get_titles = async (start, count) => { return (!titles.length) ? null : titles } +const get_titles_for_language = async (start, count, language) => { + var db = await get_db() + if (!db) { + return null + } + var titles = await db.collection('title').find({language:language}).skip(parseInt(start)).limit(parseInt(count)).toArray() + return (!titles.length) ? null : titles +} + const get_free_session_servers = async (title) => { var db = await get_db() if (!db) { @@ -119,5 +128,6 @@ module.exports = { add_active_session, generate_session_id, remove_active_session, - get_session_websocket_url + get_session_websocket_url, + get_titles_for_language } \ No newline at end of file diff --git a/src/routes/title.js b/src/routes/title.js index b36302e..db6f4a8 100644 --- a/src/routes/title.js +++ b/src/routes/title.js @@ -1,6 +1,20 @@ const router = require('express').Router() -const {get_titles} = require('../controllers/title') +const { celebrate, Joi, Segments} = require('celebrate') +const {get_titles, get_titles_for_language} = require('../controllers/title') -router.get('/get', get_titles) +router.get('/get', celebrate({ + [Segments.QUERY]: Joi.object().keys({ + start: Joi.string().required(), + count: Joi.string().required() + }) +}), get_titles) + +router.get('/get_for_language', celebrate({ + [Segments.QUERY]: Joi.object().keys({ + start: Joi.string().required(), + count: Joi.string().required(), + language: Joi.string().required() + }) +}), get_titles_for_language) module.exports = router \ No newline at end of file