@@ -344,14 +344,34 @@ class ErrsolePostgres extends EventEmitter {
344
344
*/
345
345
async searchLogs ( searchTerms , filters = { } ) {
346
346
const DEFAULT_LOGS_LIMIT = 100 ;
347
-
348
347
filters . limit = filters . limit || DEFAULT_LOGS_LIMIT ;
349
348
350
- const whereClauses = searchTerms . map ( ( ) => 'message ILIKE $' + ( whereClauses . length + 1 ) ) ;
351
- const values = searchTerms . map ( term => `% ${ term } %` ) ;
349
+ const whereClauses = [ ] ;
350
+ const values = [ ] ;
352
351
let sortOrder = 'DESC' ;
353
352
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
+ }
355
375
356
376
// Apply filters
357
377
if ( filters . hostname ) {
@@ -382,24 +402,17 @@ class ErrsolePostgres extends EventEmitter {
382
402
values . push ( filters . lt_id ) ;
383
403
sortOrder = 'DESC' ;
384
404
shouldReverse = true ;
385
- } else if ( filters . gt_id ) {
405
+ }
406
+ if ( filters . gt_id ) {
386
407
whereClauses . push ( `id > $${ index ++ } ` ) ;
387
408
values . push ( filters . gt_id ) ;
388
409
sortOrder = 'ASC' ;
389
410
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 ) ) ;
403
416
}
404
417
405
418
const whereClause = whereClauses . length ? `WHERE ${ whereClauses . join ( ' AND ' ) } ` : '' ;
@@ -408,7 +421,7 @@ class ErrsolePostgres extends EventEmitter {
408
421
409
422
const { rows } = await this . pool . query ( query , values ) ;
410
423
if ( shouldReverse ) rows . reverse ( ) ;
411
- return { items : rows } ;
424
+ return { items : rows , filters } ;
412
425
}
413
426
414
427
/**
0 commit comments