@@ -72,6 +72,14 @@ module Database.Bloodhound.Types
72 , Regexp(..)
72 , Regexp(..)
73 , RegexpFlags(..)
73 , RegexpFlags(..)
74 , RegexpFlag(..)
74 , RegexpFlag(..)
75 , FieldName(..)
83 , FieldName(..)
76 , IndexName(..)
84 , IndexName(..)
77 , MappingName(..)
85 , MappingName(..)
@@ -938,42 +946,52 @@ data RegexpFlag = AnyString
938 | Intersection
946 | Intersection
939 | Interval deriving (Eq, Show)
947 | Interval deriving (Eq, Show)
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)
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)
941−data RangeValue = RangeDateLte UTCTime
959+data RangeValue = RangeDateLte LessThanEqD
942− | RangeDateLt UTCTime
960+ | RangeDateLt LessThanD
943− | RangeDateGte UTCTime
961+ | RangeDateGte GreaterThanEqD
944− | RangeDateGt UTCTime
962+ | RangeDateGt GreaterThanD
945− | RangeDateGtLt UTCTime UTCTime
963+ | RangeDateGtLt GreaterThanD LessThanD
946− | RangeDateGteLte UTCTime UTCTime
964+ | RangeDateGteLte GreaterThanEqD LessThanEqD
947− | RangeDateGteLt UTCTime UTCTime
965+ | RangeDateGteLt GreaterThanEqD LessThanD
948− | RangeDateGtLte UTCTime UTCTime
966+ | RangeDateGtLte GreaterThanD LessThanEqD
949− | RangeDoubleLte Double
967+ | RangeDoubleLte LessThanEq
950− | RangeDoubleLt Double
968+ | RangeDoubleLt LessThan
951− | RangeDoubleGte Double
969+ | RangeDoubleGte GreaterThanEq
952− | RangeDoubleGt Double
970+ | RangeDoubleGt GreaterThan
953− | RangeDoubleGtLt Double Double
971+ | RangeDoubleGtLt GreaterThan LessThan
954− | RangeDoubleGteLte Double Double
972+ | RangeDoubleGteLte GreaterThanEq LessThanEq
955− | RangeDoubleGteLt Double Double
973+ | RangeDoubleGteLt GreaterThanEq LessThan
956− | RangeDoubleGtLte Double Double
974+ | RangeDoubleGtLte GreaterThan LessThanEq
957 deriving (Eq, Show)
975 deriving (Eq, Show)
959rangeValueToPair :: RangeValue -> [Pair]
977rangeValueToPair :: RangeValue -> [Pair]
960rangeValueToPair rv = case rv of
978rangeValueToPair rv = case rv of
961− RangeDateLte t -> ["lte" .= t]
979+ RangeDateLte (LessThanEqD t) -> ["lte" .= t]
962− RangeDateGte t -> ["gte" .= t]
980+ RangeDateGte (GreaterThanEqD t) -> ["gte" .= t]
963− RangeDateLt t -> ["lt" .= t]
981+ RangeDateLt (LessThanD t) -> ["lt" .= t]
964− RangeDateGt t -> ["gt" .= t]
982+ RangeDateGt (GreaterThanD t) -> ["gt" .= t]
965− RangeDateGteLte l g -> ["gte" .= l, "lte" .= g]
983+ RangeDateGteLte (GreaterThanEqD l) (LessThanEqD g) -> ["gte" .= l, "lte" .= g]
966− RangeDateGtLte l g -> ["gt" .= l, "lte" .= g]
984+ RangeDateGtLte (GreaterThanD l) (LessThanEqD g) -> ["gt" .= l, "lte" .= g]
967− RangeDateGteLt l g -> ["gte" .= l, "lt" .= g]
985+ RangeDateGteLt (GreaterThanEqD l) (LessThanD g) -> ["gte" .= l, "lt" .= g]
968− RangeDateGtLt l g -> ["gt" .= l, "lt" .= g]
986+ RangeDateGtLt (GreaterThanD l) (LessThanD g) -> ["gt" .= l, "lt" .= g]
969− RangeDoubleLte t -> ["lte" .= t]
987+ RangeDoubleLte (LessThanEq t) -> ["lte" .= t]
970− RangeDoubleGte t -> ["gte" .= t]
988+ RangeDoubleGte (GreaterThanEq t) -> ["gte" .= t]
971− RangeDoubleLt t -> ["lt" .= t]
989+ RangeDoubleLt (LessThan t) -> ["lt" .= t]
972− RangeDoubleGt t -> ["gt" .= t]
990+ RangeDoubleGt (GreaterThan t) -> ["gt" .= t]
973− RangeDoubleGteLte l g -> ["gte" .= l, "lte" .= g]
991+ RangeDoubleGteLte (GreaterThanEq l) (LessThanEq g) -> ["gte" .= l, "lte" .= g]
974− RangeDoubleGtLte l g -> ["gt" .= l, "lte" .= g]
992+ RangeDoubleGtLte (GreaterThan l) (LessThanEq g) -> ["gt" .= l, "lte" .= g]
975− RangeDoubleGteLt l g -> ["gte" .= l, "lt" .= g]
993+ RangeDoubleGteLt (GreaterThanEq l) (LessThan g) -> ["gte" .= l, "lt" .= g]
976− RangeDoubleGtLt l g -> ["gt" .= l, "lt" .= g]
994+ RangeDoubleGtLt (GreaterThan l) (LessThan g) -> ["gt" .= l, "lt" .= g]
978data Term = Term { termField :: Text
996data Term = Term { termField :: Text
979 , termValue :: Text } deriving (Eq, Show)
997 , termValue :: Text } deriving (Eq, Show)