diff --git a/api/src/controllers/train.controller.js b/api/src/controllers/train.controller.js index a34c6612..0beb1b3d 100644 --- a/api/src/controllers/train.controller.js +++ b/api/src/controllers/train.controller.js @@ -8,24 +8,35 @@ const train = require('../util/train.util'); const filesystem = require('../util/fs.util'); const { jwt } = require('../util/auth.util'); const { BAD_REQUEST } = require('../constants/http-status'); -const { AUTH, STORAGE } = require('../constants'); +const { AUTH, STORAGE, UI } = require('../constants'); const { tryParseJSON } = require('../util/validators.util'); module.exports.get = async (req, res) => { + const limit = UI.PAGINATION.LIMIT; + const { page } = req.query; const token = AUTH ? jwt.sign({ route: 'storage' }) : null; const db = database.connect(); let files = req.query.name ? db .prepare( - 'SELECT id, name, filename, createdAt FROM file WHERE name = ? AND isActive = 1 ORDER BY name ASC, id DESC' + 'SELECT id, name, filename, createdAt FROM file WHERE name = ? AND isActive = 1 ORDER BY id DESC LIMIT ?,?' ) - .all(req.query.name) + .bind(req.query.name, limit * (page - 1), limit) + .all() : db .prepare( - 'SELECT id, name, filename, createdAt FROM file WHERE isActive = 1 ORDER BY name ASC, id DESC' + 'SELECT id, name, filename, createdAt FROM file WHERE isActive = 1 ORDER BY id DESC LIMIT ?,?' ) + .bind(limit * (page - 1), limit) .all(); + const [total] = req.query.name + ? db + .prepare('SELECT COUNT(*) count FROM file WHERE name = ? AND isActive = 1') + .bind(req.query.name) + .all() + : db.prepare('SELECT COUNT(*) count FROM file WHERE isActive = 1').all(); + files.forEach((file) => { file.results = []; const trainings = db.prepare('SELECT * FROM train WHERE fileId = ?').all(file.id); @@ -67,7 +78,7 @@ module.exports.get = async (req, res) => { return output; }) ); - res.send(files); + res.send({ limit, total: total.count, files }); }; module.exports.delete = async (req, res) => { diff --git a/api/src/routes/train.routes.js b/api/src/routes/train.routes.js index d1279fb6..62e16e03 100644 --- a/api/src/routes/train.routes.js +++ b/api/src/routes/train.routes.js @@ -1,12 +1,13 @@ const express = require('express'); const multer = require('multer'); -const { jwt } = require('../middlewares'); +const { jwt, expressValidator, validate } = require('../middlewares'); const controller = require('../controllers/train.controller'); +const { query } = expressValidator; const router = express.Router(); router - .get('/', jwt, controller.get) + .get('/', jwt, validate([query('page').default(1).isInt()]), controller.get) .patch('/:id', jwt, controller.patch) .get('/status', controller.status) .post('/add/:name', multer().array('files[]'), controller.add) diff --git a/frontend/src/views/Train.vue b/frontend/src/views/Train.vue index 8180e97e..8c77554e 100644 --- a/frontend/src/views/Train.vue +++ b/frontend/src/views/Train.vue @@ -10,29 +10,37 @@ ref="header" />
Training in progress...
+ +Training...
No files found