Преглед изворни кода

Add raw document stats endpoints

production
Jack Foltz пре 5 година
родитељ
комит
e2985de01d
Signed by: foltik <jack@foltz.io> GPG Key ID: D1F0331758D1F29A
1 измењених фајлова са 77 додато и 0 уклоњено
  1. +77
    -0
      app/routes/api/stats.js

+ 77
- 0
app/routes/api/stats.js Прегледај датотеку

@@ -42,6 +42,83 @@ function mergeAggregations(res1, res2) {
return res;
}


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', requireAuth('stats.get'), bodyVerifier(uploadProps), wrap(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,
file: {
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', requireAuth('stats.get'), bodyVerifier(viewProps), wrap(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);
}));

router.get('/week', requireAuth('stats.get'), wrap(async (req, res) => {
const currentDate = new Date();



Loading…
Откажи
Сачувај