Skip to content

Commit b36dca0

Browse files
committed
fix: return filters in searchLogs API
1 parent e164062 commit b36dca0

File tree

1 file changed

+32
-19
lines changed

1 file changed

+32
-19
lines changed

lib/index.js

Lines changed: 32 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -344,14 +344,34 @@ class ErrsolePostgres extends EventEmitter {
344344
*/
345345
async searchLogs (searchTerms, filters = {}) {
346346
const DEFAULT_LOGS_LIMIT = 100;
347-
348347
filters.limit = filters.limit || DEFAULT_LOGS_LIMIT;
349348

350-
const whereClauses = searchTerms.map(() => 'message ILIKE $' + (whereClauses.length + 1));
351-
const values = searchTerms.map(term => `%${term}%`);
349+
const whereClauses = [];
350+
const values = [];
352351
let sortOrder = 'DESC';
353352
let shouldReverse = true;
354-
let index = values.length + 1;
353+
let index = 1;
354+
let gteTimestamp, lteTimestamp;
355+
356+
// Handle timestamp adjustments
357+
if (filters.gte_timestamp && !filters.lte_timestamp) {
358+
filters.gte_timestamp = new Date(filters.gte_timestamp);
359+
lteTimestamp = new Date(filters.gte_timestamp.getTime() + 24 * 60 * 60 * 1000);
360+
filters.lte_timestamp = lteTimestamp;
361+
}
362+
if (filters.lte_timestamp && !filters.gte_timestamp) {
363+
filters.lte_timestamp = new Date(filters.lte_timestamp);
364+
gteTimestamp = new Date(filters.lte_timestamp.getTime() - 24 * 60 * 60 * 1000);
365+
filters.gte_timestamp = gteTimestamp;
366+
}
367+
368+
// Search terms with AND logic
369+
if (searchTerms && searchTerms.length > 0) {
370+
searchTerms.forEach(term => {
371+
whereClauses.push(`message ILIKE $${index++}`);
372+
values.push(`%${term}%`);
373+
});
374+
}
355375

356376
// Apply filters
357377
if (filters.hostname) {
@@ -382,24 +402,17 @@ class ErrsolePostgres extends EventEmitter {
382402
values.push(filters.lt_id);
383403
sortOrder = 'DESC';
384404
shouldReverse = true;
385-
} else if (filters.gt_id) {
405+
}
406+
if (filters.gt_id) {
386407
whereClauses.push(`id > $${index++}`);
387408
values.push(filters.gt_id);
388409
sortOrder = 'ASC';
389410
shouldReverse = false;
390-
} else if (filters.lte_timestamp || filters.gte_timestamp) {
391-
if (filters.lte_timestamp) {
392-
whereClauses.push(`timestamp <= $${index++}`);
393-
values.push(new Date(filters.lte_timestamp));
394-
sortOrder = 'DESC';
395-
shouldReverse = true;
396-
}
397-
if (filters.gte_timestamp) {
398-
whereClauses.push(`timestamp >= $${index++}`);
399-
values.push(new Date(filters.gte_timestamp));
400-
sortOrder = 'ASC';
401-
shouldReverse = false;
402-
}
411+
}
412+
if (filters.lte_timestamp || filters.gte_timestamp) {
413+
whereClauses.push(`timestamp >= $${index++} AND timestamp <= $${index++}`);
414+
values.push(gteTimestamp || new Date(filters.gte_timestamp));
415+
values.push(lteTimestamp || new Date(filters.lte_timestamp));
403416
}
404417

405418
const whereClause = whereClauses.length ? `WHERE ${whereClauses.join(' AND ')}` : '';
@@ -408,7 +421,7 @@ class ErrsolePostgres extends EventEmitter {
408421

409422
const { rows } = await this.pool.query(query, values);
410423
if (shouldReverse) rows.reverse();
411-
return { items: rows };
424+
return { items: rows, filters };
412425
}
413426

414427
/**

0 commit comments

Comments
 (0)