LCOV - code coverage report
Current view: top level - query - predicate.dart (source / functions) Hit Total Coverage
Test: lcov.info Lines: 24 24 100.0 %
Date: 2021-05-31 17:15:31 Functions: 0 0 -

          Line data    Source code
       1             : import 'package:freezed_annotation/freezed_annotation.dart';
       2             : 
       3             : part 'predicate.freezed.dart';
       4             : 
       5             : ///Predicate model
       6             : ///
       7             : ///Create a new Predicate that handle the data for
       8             : ///querying.
       9             : @freezed
      10             : class Predicate with _$Predicate {
      11             :   ///General predicates
      12             : 
      13             :   ///Any
      14             :   factory Predicate.any(PredicatePath path, List<String> values) = AnyPredicate;
      15             : 
      16             :   ///At
      17             :   factory Predicate.at(PredicatePath path, String value) = AtPredicate;
      18             : 
      19             :   ///FullText
      20             :   factory Predicate.fullText(PredicatePath path, String value) =
      21             :       FullTextPredicate;
      22             : 
      23             :   ///Greater than
      24             :   factory Predicate.gt(PredicatePath path, double value) = GtPredicate;
      25             : 
      26             :   ///Has
      27             :   factory Predicate.has(PredicatePath path) = HasPredicate;
      28             : 
      29             :   ///In Range
      30             :   factory Predicate.inRange(
      31             :           PredicatePath path, double lowerLimit, double upperLimit) =
      32             :       InRangePredicate;
      33             : 
      34             :   ///In
      35             :   factory Predicate.into(PredicatePath path, List<String> values) = InPredicate;
      36             : 
      37             :   ///Less than
      38             :   factory Predicate.lt(PredicatePath path, double value) = LtPredicate;
      39             : 
      40             :   ///Missing
      41             :   factory Predicate.missing(PredicatePath path) = MissingPredicate;
      42             : 
      43             :   ///Near
      44             :   factory Predicate.near(PredicatePath path, double latitude, double longitude,
      45             :       double radius) = NearPredicate;
      46             : 
      47             :   ///Not
      48             :   factory Predicate.not(PredicatePath path, String value) = NotPredicate;
      49             : 
      50             :   ///Similar
      51             :   factory Predicate.similar(String id, int value) = SimilarPredicate;
      52             : 
      53             :   ///Date/Time predicates
      54             : 
      55             :   ///After
      56             :   factory Predicate.dateAfter(PredicatePath path, int epoch) =
      57             :       DateAfterPredicate;
      58             : 
      59             :   ///Before
      60             :   factory Predicate.dateBefore(PredicatePath path, int epoch) =
      61             :       DateBeforePredicate;
      62             : 
      63             :   ///Between
      64             :   factory Predicate.dateBetween(
      65             :       PredicatePath path, int startEpoch, int endEpoch) = DateBetweenPredicate;
      66             : 
      67             :   ///Day of month
      68             :   factory Predicate.dateDayOfMonth(PredicatePath path, int day) =
      69             :       DateDayOfMonthPredicate;
      70             : 
      71             :   ///Day of mont after
      72             :   factory Predicate.dateDayOfMonthAfter(PredicatePath path, int day) =
      73             :       DateDayOfMonthAfterPredicate;
      74             : 
      75             :   ///Day of mont before
      76             :   factory Predicate.dateDayOfMonthBefore(PredicatePath path, int day) =
      77             :       DateDayOfMonthBeforePredicate;
      78             : 
      79             :   ///Day of week
      80             :   factory Predicate.dateDayOfWeek(PredicatePath path, String day) =
      81             :       DateDayOfWeekPredicate;
      82             : 
      83             :   ///Day of week after
      84             :   factory Predicate.dateDayOfWeekAfter(PredicatePath path, String day) =
      85             :       DateDayOfWeekAfterPredicate;
      86             : 
      87             :   ///Day of week before
      88             :   factory Predicate.dateDayOfWeekBefore(PredicatePath path, String day) =
      89             :       DateDayOfWeekBeforePredicate;
      90             : 
      91             :   ///Day of month
      92             :   factory Predicate.dateMonth(PredicatePath path, String month) =
      93             :       DateMonthPredicate;
      94             : 
      95             :   ///Day of month after
      96             :   factory Predicate.dateMonthAfter(PredicatePath path, String month) =
      97             :       DateMonthAfterPredicate;
      98             : 
      99             :   ///Day of month before
     100             :   factory Predicate.dateMonthBefore(PredicatePath path, String month) =
     101             :       DateMonthBeforePredicate;
     102             : 
     103             :   ///Year
     104             :   factory Predicate.dateYear(PredicatePath path, int year) = DateYearPredicate;
     105             : 
     106             :   ///Hour
     107             :   factory Predicate.hour(PredicatePath path, int hour) = DateHourPredicate;
     108             : 
     109             :   ///Hour after
     110             :   factory Predicate.hourAfter(PredicatePath path, int hour) =
     111             :       DateHourAfterPredicate;
     112             : 
     113             :   ///Hour before
     114             :   factory Predicate.hourBefore(PredicatePath path, int hour) =
     115             :       DateHourBeforePredicate;
     116             : }
     117             : 
     118             : ///Enum for define DefaultPredicatePath
     119           7 : enum DefaultPath {
     120             :   ///Document path
     121             :   document,
     122             : 
     123             :   ///Publication date path
     124             :   firstPublicationDate,
     125             : 
     126             :   ///Id Path
     127             :   id,
     128             : 
     129             :   ///Last update path
     130             :   lastPublicationDate,
     131             : 
     132             :   ///Tags path
     133             :   tags,
     134             : 
     135             :   ///Type path
     136             :   type
     137             : }
     138             : 
     139             : ///Base class for Paths
     140             : abstract class PredicatePath {}
     141             : 
     142             : ///Define a Default path for predicates
     143             : class DefaultPredicatePath extends PredicatePath {
     144           5 :   DefaultPredicatePath._(this._path);
     145             : 
     146             :   ///Default path for document query
     147           2 :   static final DefaultPredicatePath document =
     148           1 :       DefaultPredicatePath._(DefaultPath.document);
     149             : 
     150             :   ///Default path for id query
     151          12 :   static final DefaultPredicatePath id = DefaultPredicatePath._(DefaultPath.id);
     152             : 
     153             :   ///Default path for tags query
     154           2 :   static final DefaultPredicatePath tags =
     155           1 :       DefaultPredicatePath._(DefaultPath.tags);
     156             : 
     157             :   ///Default path for type query
     158           6 :   static final DefaultPredicatePath type =
     159           3 :       DefaultPredicatePath._(DefaultPath.type);
     160             : 
     161             :   ///Default path for publication date query
     162           2 :   static final DefaultPredicatePath firstPublicationDate =
     163           1 :       DefaultPredicatePath._(DefaultPath.firstPublicationDate);
     164             : 
     165             :   ///Default path for last update query
     166           2 :   static final DefaultPredicatePath lastPublicationDate =
     167           1 :       DefaultPredicatePath._(DefaultPath.lastPublicationDate);
     168             : 
     169             :   final DefaultPath _path;
     170             : 
     171           5 :   @override
     172             :   String toString() {
     173           5 :     switch (_path) {
     174           5 :       case DefaultPath.document:
     175             :         return 'document';
     176           5 :       case DefaultPath.id:
     177             :         return 'document.id';
     178           4 :       case DefaultPath.tags:
     179             :         return 'document.tags';
     180           4 :       case DefaultPath.type:
     181             :         return 'document.type';
     182           1 :       case DefaultPath.firstPublicationDate:
     183             :         return 'document.first_publication_date';
     184           1 :       case DefaultPath.lastPublicationDate:
     185             :         return 'document.last_publication_date';
     186             :       default:
     187             :         return '';
     188             :     }
     189             :   }
     190             : }
     191             : 
     192             : ///Define a Custom path for predicates
     193             : class CustomPredicatePath extends PredicatePath {
     194             :   ///Main constructor
     195           4 :   CustomPredicatePath(this.customType, this.value, {this.fetch = false});
     196             : 
     197             :   ///Type
     198             :   final String customType;
     199             : 
     200             :   ///Value
     201             :   final String value;
     202             : 
     203             :   ///For fetch or fetchLinks
     204             :   final bool fetch;
     205             : 
     206           4 :   @override
     207          16 :   String toString() => fetch ? '$customType.$value' : 'my.$customType.$value';
     208             : }

Generated by: LCOV version 1.15