|
- const express = require('express');
- const router = express.Router();
-
- const ModelPath = '../../models/';
- const Upload = require(ModelPath + 'Upload.js');
- const View = require(ModelPath + 'View.js');
-
- const verifyBody = require('../../util/verifyBody');
- const authenticate = require('../../util/auth/authenticateRequest');
-
- const uploadProps = [
- {name: 'after', type: 'date', optional: true},
- {name: 'before', type: 'date', optional: true},
- {name: 'limit', type: 'number', min: 1, max: 10000, optional: true}
- ];
-
- router.get('/uploads', authenticate('stats.get'), verifyBody(uploadProps), async (req, res) => {
- let constraints = {uploader: req.username};
-
- // Set date constraints if specified
- if (req.body.after || req.body.before)
- constraints.date = {};
- if (req.body.after)
- constraints.date.$gt = new Date(req.body.after);
- if (req.body.before)
- constraints.date.$lt = new Date(req.body.before);
-
- // Create query
- const query = Upload.find(constraints);
-
- // Limit if specified
- if (req.body.limit)
- query.limit(req.body.limit);
-
- // Fetch and transform results
- let uploads = await query;
- uploads = uploads.map(upload => {
- return {
- date: upload.date,
- uid: upload.uid,
- key: upload.uploaderKey,
- originalName: upload.file.originalName,
- size: upload.file.size,
- mime: upload.file.mime
- }
- });
-
- res.status(200).json(uploads);
- });
-
-
- const viewProps = [
- {name: 'after', type: 'date', optional: true},
- {name: 'before', type: 'date', optional: true},
- {name: 'limit', type: 'number', min: 1, max: 10000, optional: true}
- ];
-
- router.get('/views', authenticate('stats.get'), verifyBody(viewProps), async (req, res) => {
- let constraints = {uploader: req.username};
-
- // Set date constraints if specified
- if (req.body.after || req.body.before)
- constraints.date = {};
- if (req.body.after)
- constraints.date.$gt = new Date(req.body.after);
- if (req.body.before)
- constraints.date.$lt = new Date(req.body.before);
-
- // Create query
- const query = View.find(constraints);
-
- // Limit if specified
- if (req.body.limit)
- query.limit(req.body.limit);
-
- // Fetch and transform results
- let views = await query;
- views = views.map(view => {
- return {
- date: view.date,
- uid: view.uid,
- }
- });
-
- res.status(200).json(views);
- });
-
- module.exports = router;
|