git.iko.soy/typeable/bloodhound
on master help sign in
range newtypes
commit93738176ae81461f3a697a2a5c3749636f9e32bd authorAlex K <alex@eat-up.org> dateSat 7 Feb 2015, 19:28 (12 years ago) parente449cf3
2 files changed+57−39
src/Database/Bloodhound/Types.hs+50−32 tests/tests.hs+7−7
src/Database/Bloodhound/Types.hs+50−32
@@ -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)
tests/tests.hs+7−7
@@ -435,7 +435,7 @@ main = hspec $ do
435435 it "returns document for Double range filter" $ do
436436 _ <- insertData
437437 let filter = RangeFilter (FieldName "age")
438− (RangeDoubleGtLt 1000.0 100000.0)
438+ (RangeDoubleGtLt (GreaterThan 1000.0) (LessThan 100000.0))
439439 RangeExecutionIndex False
440440 let search = mkSearch Nothing (Just filter)
441441 myTweet <- searchTweet search
@@ -445,12 +445,12 @@ main = hspec $ do
445445 _ <- insertData
446446 let filter = RangeFilter (FieldName "postDate")
447447 (RangeDateGtLt
448− (UTCTime
449− (ModifiedJulianDay 55000)
450− (secondsToDiffTime 9))
451− (UTCTime
452− (ModifiedJulianDay 55000)
453− (secondsToDiffTime 11)))
448+ (GreaterThanD (UTCTime
449+ (ModifiedJulianDay 55000)
450+ (secondsToDiffTime 9)))
451+ (LessThanD (UTCTime
452+ (ModifiedJulianDay 55000)
453+ (secondsToDiffTime 11))))
454454 RangeExecutionIndex False
455455 let search = mkSearch Nothing (Just filter)
456456 myTweet <- searchTweet search