@@ -72,6 +72,14 @@ module Database.Bloodhound.Types
7272 , Regexp(..)
7373 , RegexpFlags(..)
7474 , RegexpFlag(..)
75+ , LessThan(..)
76+ , LessThanEq(..)
77+ , GreaterThan(..)
78+ , GreaterThanEq(..)
79+ , LessThanD(..)
80+ , LessThanEqD(..)
81+ , GreaterThanD(..)
82+ , GreaterThanEqD(..)
7583 , FieldName(..)
7684 , IndexName(..)
7785 , MappingName(..)
@@ -938,42 +946,52 @@ data RegexpFlag = AnyString
938946 | Intersection
939947 | Interval deriving (Eq, Show)
940948
941−data RangeValue = RangeDateLte UTCTime
942− | RangeDateLt UTCTime
943− | RangeDateGte UTCTime
944− | RangeDateGt UTCTime
945− | RangeDateGtLt UTCTime UTCTime
946− | RangeDateGteLte UTCTime UTCTime
947− | RangeDateGteLt UTCTime UTCTime
948− | RangeDateGtLte UTCTime UTCTime
949− | RangeDoubleLte Double
950− | RangeDoubleLt Double
951− | RangeDoubleGte Double
952− | RangeDoubleGt Double
953− | RangeDoubleGtLt Double Double
954− | RangeDoubleGteLte Double Double
955− | RangeDoubleGteLt Double Double
956− | RangeDoubleGtLte Double Double
949+newtype LessThan = LessThan Double deriving (Eq, Show)
950+newtype LessThanEq = LessThanEq Double deriving (Eq, Show)
951+newtype GreaterThan = GreaterThan Double deriving (Eq, Show)
952+newtype GreaterThanEq = GreaterThanEq Double deriving (Eq, Show)
953+
954+newtype LessThanD = LessThanD UTCTime deriving (Eq, Show)
955+newtype LessThanEqD = LessThanEqD UTCTime deriving (Eq, Show)
956+newtype GreaterThanD = GreaterThanD UTCTime deriving (Eq, Show)
957+newtype GreaterThanEqD = GreaterThanEqD UTCTime deriving (Eq, Show)
958+
959+data RangeValue = RangeDateLte LessThanEqD
960+ | RangeDateLt LessThanD
961+ | RangeDateGte GreaterThanEqD
962+ | RangeDateGt GreaterThanD
963+ | RangeDateGtLt GreaterThanD LessThanD
964+ | RangeDateGteLte GreaterThanEqD LessThanEqD
965+ | RangeDateGteLt GreaterThanEqD LessThanD
966+ | RangeDateGtLte GreaterThanD LessThanEqD
967+ | RangeDoubleLte LessThanEq
968+ | RangeDoubleLt LessThan
969+ | RangeDoubleGte GreaterThanEq
970+ | RangeDoubleGt GreaterThan
971+ | RangeDoubleGtLt GreaterThan LessThan
972+ | RangeDoubleGteLte GreaterThanEq LessThanEq
973+ | RangeDoubleGteLt GreaterThanEq LessThan
974+ | RangeDoubleGtLte GreaterThan LessThanEq
957975 deriving (Eq, Show)
958976
959977rangeValueToPair :: RangeValue -> [Pair]
960978rangeValueToPair rv = case rv of
961− RangeDateLte t -> ["lte" .= t]
962− RangeDateGte t -> ["gte" .= t]
963− RangeDateLt t -> ["lt" .= t]
964− RangeDateGt t -> ["gt" .= t]
965− RangeDateGteLte l g -> ["gte" .= l, "lte" .= g]
966− RangeDateGtLte l g -> ["gt" .= l, "lte" .= g]
967− RangeDateGteLt l g -> ["gte" .= l, "lt" .= g]
968− RangeDateGtLt l g -> ["gt" .= l, "lt" .= g]
969− RangeDoubleLte t -> ["lte" .= t]
970− RangeDoubleGte t -> ["gte" .= t]
971− RangeDoubleLt t -> ["lt" .= t]
972− RangeDoubleGt t -> ["gt" .= t]
973− RangeDoubleGteLte l g -> ["gte" .= l, "lte" .= g]
974− RangeDoubleGtLte l g -> ["gt" .= l, "lte" .= g]
975− RangeDoubleGteLt l g -> ["gte" .= l, "lt" .= g]
976− RangeDoubleGtLt l g -> ["gt" .= l, "lt" .= g]
979+ RangeDateLte (LessThanEqD t) -> ["lte" .= t]
980+ RangeDateGte (GreaterThanEqD t) -> ["gte" .= t]
981+ RangeDateLt (LessThanD t) -> ["lt" .= t]
982+ RangeDateGt (GreaterThanD t) -> ["gt" .= t]
983+ RangeDateGteLte (GreaterThanEqD l) (LessThanEqD g) -> ["gte" .= l, "lte" .= g]
984+ RangeDateGtLte (GreaterThanD l) (LessThanEqD g) -> ["gt" .= l, "lte" .= g]
985+ RangeDateGteLt (GreaterThanEqD l) (LessThanD g) -> ["gte" .= l, "lt" .= g]
986+ RangeDateGtLt (GreaterThanD l) (LessThanD g) -> ["gt" .= l, "lt" .= g]
987+ RangeDoubleLte (LessThanEq t) -> ["lte" .= t]
988+ RangeDoubleGte (GreaterThanEq t) -> ["gte" .= t]
989+ RangeDoubleLt (LessThan t) -> ["lt" .= t]
990+ RangeDoubleGt (GreaterThan t) -> ["gt" .= t]
991+ RangeDoubleGteLte (GreaterThanEq l) (LessThanEq g) -> ["gte" .= l, "lte" .= g]
992+ RangeDoubleGtLte (GreaterThan l) (LessThanEq g) -> ["gt" .= l, "lte" .= g]
993+ RangeDoubleGteLt (GreaterThanEq l) (LessThan g) -> ["gte" .= l, "lt" .= g]
994+ RangeDoubleGtLt (GreaterThan l) (LessThan g) -> ["gt" .= l, "lt" .= g]
977995
978996data Term = Term { termField :: Text
979997 , termValue :: Text } deriving (Eq, Show)