Skip to content

Commit d18b27d

Browse files
committed
fix: Pass filtering to get
Fixes #33
1 parent 1243281 commit d18b27d

File tree

2 files changed

+33
-6
lines changed

2 files changed

+33
-6
lines changed

packages/micro-analytics-cli/src/handler.js

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,16 +35,15 @@ async function readMeta(req) {
3535

3636
async function analyticsHandler(req, res) {
3737
const { pathname, query } = url.parse(req.url, /* parseQueryString */ true);
38+
const before = parseInt(query.before, 10) || undefined;
39+
const after = parseInt(query.after, 10) || undefined;
40+
3841
res.setHeader('Access-Control-Allow-Origin', '*');
3942
// Send all views down if "?all" is true
4043
if (String(query.all) === 'true') {
4144
try {
4245
const data = {
43-
data: await db.getAll({
44-
pathname: pathname,
45-
before: parseInt(query.before, 10),
46-
after: parseInt(query.after, 10),
47-
}),
46+
data: await db.getAll({ pathname: pathname, before, after }),
4847
time: Date.now(),
4948
};
5049
send(res, 200, data);
@@ -71,7 +70,10 @@ async function analyticsHandler(req, res) {
7170
const shouldIncrement = String(query.inc) !== 'false';
7271
try {
7372
let meta;
74-
const currentViews = (await db.has(pathname)) ? (await db.get(pathname)).views.length : 0;
73+
const currentViews = (await db.has(pathname))
74+
? (await db.get(pathname, { before, after })).views.length
75+
: 0;
76+
7577
if (req.method === 'POST') {
7678
meta = await readMeta(req);
7779
}

packages/micro-analytics-cli/tests/items.test.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,31 @@ describe('single', () => {
5656
expect(data).toMatchObject({ meta: { browser: 'IE 6' } });
5757
});
5858
});
59+
60+
describe.only('filtering', () => {
61+
it('should filter based on before after', async () => {
62+
const after = new Date('2017-01-01T09:11:00.000Z').getTime();
63+
const before = new Date('2017-01-01T09:41:00.000Z').getTime();
64+
65+
await db.put('/rover', {
66+
views: [
67+
{ time: new Date('2017-01-01T09:00:00.000Z').getTime() },
68+
{ time: new Date('2017-01-01T09:10:00.000Z').getTime() },
69+
{ time: new Date('2017-01-01T09:20:00.000Z').getTime() },
70+
{ time: new Date('2017-01-01T09:30:00.000Z').getTime() },
71+
{ time: new Date('2017-01-01T09:40:00.000Z').getTime() },
72+
{ time: new Date('2017-01-01T09:50:00.000Z').getTime() },
73+
],
74+
});
75+
76+
const mapToIsoString = view => new Date(view.time).toISOString();
77+
const body = JSON.parse(
78+
await request(`${server.url}/rover?inc=false&before=${before}&after=${after}`)
79+
);
80+
81+
expect(body.views).toEqual(3);
82+
});
83+
});
5984
});
6085

6186
describe('all', () => {

0 commit comments

Comments
 (0)