mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-05-06 06:46:02 +02:00
feat: closes #12453, filter events by user/group
This commit is contained in:
@@ -3,6 +3,8 @@
|
||||
const db = require('../../database');
|
||||
const events = require('../../events');
|
||||
const pagination = require('../../pagination');
|
||||
const user = require('../../user');
|
||||
const groups = require('../../groups');
|
||||
|
||||
const eventsController = module.exports;
|
||||
|
||||
@@ -11,18 +13,35 @@ eventsController.get = async function (req, res) {
|
||||
const itemsPerPage = parseInt(req.query.perPage, 10) || 20;
|
||||
const start = (page - 1) * itemsPerPage;
|
||||
const stop = start + itemsPerPage - 1;
|
||||
let uids;
|
||||
if (req.query.username) {
|
||||
uids = [await user.getUidByUsername(req.query.username)];
|
||||
} else if (req.query.group) {
|
||||
uids = await groups.getMembers(req.query.group, 0, -1);
|
||||
}
|
||||
|
||||
// Limit by date
|
||||
let from = req.query.start ? new Date(req.query.start) || undefined : undefined;
|
||||
let to = req.query.end ? new Date(req.query.end) || undefined : new Date();
|
||||
from = from && from.setHours(0, 0, 0, 0); // setHours returns a unix timestamp (Number, not Date)
|
||||
to = to && to.setHours(23, 59, 59, 999); // setHours returns a unix timestamp (Number, not Date)
|
||||
from = from && from.setUTCHours(0, 0, 0, 0); // setHours returns a unix timestamp (Number, not Date)
|
||||
to = to && to.setUTCHours(23, 59, 59, 999); // setHours returns a unix timestamp (Number, not Date)
|
||||
|
||||
const currentFilter = req.query.type || '';
|
||||
|
||||
const [eventCount, eventData, counts] = await Promise.all([
|
||||
db.sortedSetCount(`events:time${currentFilter ? `:${currentFilter}` : ''}`, from || '-inf', to),
|
||||
events.getEvents(currentFilter, start, stop, from || '-inf', to),
|
||||
events.getEventCount({
|
||||
filter: currentFilter,
|
||||
uids,
|
||||
from: from || '-inf',
|
||||
to,
|
||||
}),
|
||||
events.getEvents({
|
||||
filter: currentFilter,
|
||||
uids,
|
||||
start,
|
||||
stop,
|
||||
from: from || '-inf',
|
||||
to,
|
||||
}),
|
||||
db.sortedSetsCard([''].concat(events.types).map(type => `events:time${type ? `:${type}` : ''}`)),
|
||||
]);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user