@@ -19,6 +19,7 @@ import { ApplicationFilter } from "src/endpoints/applications/entities/applicati
1919import { NftType } from "../entities/nft.type" ;
2020import { EventsFilter } from "src/endpoints/events/entities/events.filter" ;
2121import { ScriptQuery } from "./script.query" ;
22+ import { TimeUtils } from "src/utils/time.utils" ;
2223
2324@Injectable ( )
2425export class ElasticIndexerHelper {
@@ -99,7 +100,14 @@ export class ElasticIndexerHelper {
99100 }
100101
101102 if ( filter . before || filter . after ) {
102- elasticQuery = elasticQuery . withDateRangeFilter ( 'timestamp' , filter . before , filter . after ) ;
103+ if ( filter . before ) {
104+ const timestampBeforeIdentifier = TimeUtils . isTimestampInSeconds ( filter . before ) ? 'timestamp' : 'timestampMs' ;
105+ elasticQuery = elasticQuery . withRangeFilter ( timestampBeforeIdentifier , new RangeLowerThanOrEqual ( filter . before ) ) ;
106+ }
107+ if ( filter . after ) {
108+ const timestampAfterIdentifier = TimeUtils . isTimestampInSeconds ( filter . after ) ? 'timestamp' : 'timestampMs' ;
109+ elasticQuery = elasticQuery . withRangeFilter ( timestampAfterIdentifier , new RangeGreaterThanOrEqual ( filter . after ) ) ;
110+ }
103111 }
104112
105113 if ( filter . canCreate !== undefined ) {
@@ -278,8 +286,13 @@ export class ElasticIndexerHelper {
278286 }
279287 }
280288
281- if ( filter . before || filter . after ) {
282- elasticQuery = elasticQuery . withDateRangeFilter ( 'timestamp' , filter . before , filter . after ) ;
289+ if ( filter . before ) {
290+ const timestampBeforeIdentifier = TimeUtils . isTimestampInSeconds ( filter . before ) ? 'timestamp' : 'timestampMs' ;
291+ elasticQuery = elasticQuery . withRangeFilter ( timestampBeforeIdentifier , new RangeLowerThanOrEqual ( filter . before ) ) ;
292+ }
293+ if ( filter . after ) {
294+ const timestampAfterIdentifier = TimeUtils . isTimestampInSeconds ( filter . after ) ? 'timestamp' : 'timestampMs' ;
295+ elasticQuery = elasticQuery . withRangeFilter ( timestampAfterIdentifier , new RangeGreaterThanOrEqual ( filter . after ) ) ;
283296 }
284297
285298 if ( filter . nonceBefore ) {
@@ -408,8 +421,13 @@ export class ElasticIndexerHelper {
408421 elasticQuery = elasticQuery . withCondition ( QueryConditionOptions . must , QueryType . Match ( 'status' , filter . status ) ) ;
409422 }
410423
411- if ( filter . before || filter . after ) {
412- elasticQuery = elasticQuery . withDateRangeFilter ( 'timestamp' , filter . before , filter . after ) ;
424+ if ( filter . before ) {
425+ const timestampBeforeIdentifier = TimeUtils . isTimestampInSeconds ( filter . before ) ? 'timestamp' : 'timestampMs' ;
426+ elasticQuery = elasticQuery . withRangeFilter ( timestampBeforeIdentifier , new RangeLowerThanOrEqual ( filter . before ) ) ;
427+ }
428+ if ( filter . after ) {
429+ const timestampAfterIdentifier = TimeUtils . isTimestampInSeconds ( filter . after ) ? 'timestamp' : 'timestampMs' ;
430+ elasticQuery = elasticQuery . withRangeFilter ( timestampAfterIdentifier , new RangeGreaterThanOrEqual ( filter . after ) ) ;
413431 }
414432
415433 if ( filter . senderOrReceiver ) {
@@ -552,8 +570,16 @@ export class ElasticIndexerHelper {
552570 . withMustMatchCondition ( 'miniBlockHash' , filter . miniBlockHash )
553571 . withMustMultiShouldCondition ( filter . hashes , hash => QueryType . Match ( '_id' , hash ) )
554572 . withMustMatchCondition ( 'status' , filter . status )
555- . withMustMultiShouldCondition ( filter . tokens , token => QueryType . Match ( 'tokens' , token , QueryOperator . AND ) )
556- . withDateRangeFilter ( 'timestamp' , filter . before , filter . after ) ;
573+ . withMustMultiShouldCondition ( filter . tokens , token => QueryType . Match ( 'tokens' , token , QueryOperator . AND ) ) ;
574+
575+ if ( filter . before ) {
576+ const timestampBeforeIdentifier = TimeUtils . isTimestampInSeconds ( filter . before ) ? 'timestamp' : 'timestampMs' ;
577+ elasticQuery = elasticQuery . withRangeFilter ( timestampBeforeIdentifier , new RangeLowerThanOrEqual ( filter . before ) ) ;
578+ }
579+ if ( filter . after ) {
580+ const timestampAfterIdentifier = TimeUtils . isTimestampInSeconds ( filter . after ) ? 'timestamp' : 'timestampMs' ;
581+ elasticQuery = elasticQuery . withRangeFilter ( timestampAfterIdentifier , new RangeGreaterThanOrEqual ( filter . after ) ) ;
582+ }
557583
558584 if ( filter . functions && filter . functions . length > 0 ) {
559585 if ( filter . functions . length === 1 && filter . functions [ 0 ] === '' ) {
@@ -658,8 +684,13 @@ export class ElasticIndexerHelper {
658684
659685 let elasticQuery = ElasticQuery . create ( ) . withCondition ( QueryConditionOptions . must , mustQueries ) ;
660686
661- if ( filter && ( filter . before || filter . after ) ) {
662- elasticQuery = elasticQuery . withDateRangeFilter ( 'timestamp' , filter . before , filter . after ) ;
687+ if ( filter && filter . before ) {
688+ const timestampBeforeIdentifier = TimeUtils . isTimestampInSeconds ( filter . before ) ? 'timestamp' : 'timestampMs' ;
689+ elasticQuery = elasticQuery . withRangeFilter ( timestampBeforeIdentifier , new RangeLowerThanOrEqual ( filter . before ) ) ;
690+ }
691+ if ( filter && filter . after ) {
692+ const timestampAfterIdentifier = TimeUtils . isTimestampInSeconds ( filter . after ) ? 'timestamp' : 'timestampMs' ;
693+ elasticQuery = elasticQuery . withRangeFilter ( timestampAfterIdentifier , new RangeGreaterThanOrEqual ( filter . after ) ) ;
663694 }
664695
665696 if ( filter && filter . identifiers ) {
@@ -764,11 +795,13 @@ export class ElasticIndexerHelper {
764795 let elasticQuery = ElasticQuery . create ( ) ;
765796
766797 if ( filter . after ) {
767- elasticQuery = elasticQuery . withRangeFilter ( 'timestamp' , new RangeGreaterThanOrEqual ( filter . after ) ) ;
798+ const timestampIdentifier = TimeUtils . isTimestampInSeconds ( filter . after ) ? 'timestamp' : 'timestampMs' ;
799+ elasticQuery = elasticQuery . withRangeFilter ( timestampIdentifier , new RangeGreaterThanOrEqual ( filter . after ) ) ;
768800 }
769801
770802 if ( filter . before ) {
771- elasticQuery = elasticQuery . withRangeFilter ( 'timestamp' , new RangeLowerThanOrEqual ( filter . before ) ) ;
803+ const timestampIdentifier = TimeUtils . isTimestampInSeconds ( filter . before ) ? 'timestamp' : 'timestampMs' ;
804+ elasticQuery = elasticQuery . withRangeFilter ( timestampIdentifier , new RangeLowerThanOrEqual ( filter . before ) ) ;
772805 }
773806
774807 return elasticQuery ;
@@ -791,11 +824,13 @@ export class ElasticIndexerHelper {
791824 let elasticQuery = ElasticQuery . create ( ) ;
792825
793826 if ( filter . before ) {
794- elasticQuery = elasticQuery . withRangeFilter ( 'timestamp' , new RangeLowerThanOrEqual ( filter . before ) ) ;
827+ const timestampIdentifier = TimeUtils . isTimestampInSeconds ( filter . before ) ? 'timestamp' : 'timestampMs' ;
828+ elasticQuery = elasticQuery . withRangeFilter ( timestampIdentifier , new RangeLowerThanOrEqual ( filter . before ) ) ;
795829 }
796830
797831 if ( filter . after ) {
798- elasticQuery = elasticQuery . withRangeFilter ( 'timestamp' , new RangeGreaterThanOrEqual ( filter . after ) ) ;
832+ const timestampIdentifier = TimeUtils . isTimestampInSeconds ( filter . after ) ? 'timestamp' : 'timestampMs' ;
833+ elasticQuery = elasticQuery . withRangeFilter ( timestampIdentifier , new RangeGreaterThanOrEqual ( filter . after ) ) ;
799834 }
800835
801836 if ( filter . identifier ) {
0 commit comments