@@ -1,3 +1,4 @@
1+-- | A key has an associated type which is one of: number, date, string, binary, or array.
1module Database.IndexedDB.IDBKeyRange
2module Database.IndexedDB.IDBKeyRange
2 ( class IDBKeyRange, includes
3 ( class IDBKeyRange, includes
@@ -25,25 +26,56 @@ import Database.IndexedDB.IDBKey.Internal (class IDBKey, Key(..), toKey, extract
25--------------------
26--------------------
26-- INTERFACES
27-- INTERFACES
29+-- | The IDBKeyRange interface represents a key range.
28class IDBKeyRange range where
30class IDBKeyRange range where
31+ -- | Returns true if key is included in the range, and false otherwise.
29 includes :: range -> Key -> Boolean
32 includes :: range -> Key -> Boolean
35+-- | Type alias for open
39+-- | Returns a new IDBKeyRange spanning only key.
32−only :: forall a. (IDBKey a) => a -> KeyRange
41+ :: forall a. (IDBKey a)
34 _only (extractForeign $ toKey key)
45 _only (extractForeign $ toKey key)
48+-- | Returns a new IDBKeyRange starting at key with no upper bound.
49+-- | If `Open` is `true`, key is not included in the range.
37−lowerBound :: forall a. (IDBKey a) => a -> Boolean -> KeyRange
51+ :: forall a. (IDBKey a)
38lowerBound key open =
55lowerBound key open =
39 Fn.runFn2 _lowerBound (extractForeign $ toKey key) open
56 Fn.runFn2 _lowerBound (extractForeign $ toKey key) open
59+-- | Returns a new IDBKeyRange with no lower bound and ending at key.
60+-- | If `Open` is `true`, key is not included in the range.
42−upperBound :: forall a. (IDBKey a) => a -> Boolean -> KeyRange
62+ :: forall a. (IDBKey a)
43upperBound key open =
66upperBound key open =
44 Fn.runFn2 _upperBound (extractForeign $ toKey key) open
67 Fn.runFn2 _upperBound (extractForeign $ toKey key) open
70+-- | Returns a new IDBKeyRange spanning from `lower` to `upper`.
71+-- | If `lowerOpen` is `true`, `lower` is not included in the range.
72+-- | If `upperOpen` is `true`, `upper` is not included in the range.
74+-- | It throws a `DataError` if the bound is invalid.
76+ :: forall a. (IDBKey a)
46−bound :: forall a. (IDBKey a) => { lower :: a, upper :: a, lowerOpen :: Boolean, upperOpen :: Boolean } -> Maybe KeyRange
77+ => { lower :: a, upper :: a, lowerOpen :: Boolean, upperOpen :: Boolean }
47bound { lower: key1, upper: key2, lowerOpen: open1, upperOpen: open2 } =
79bound { lower: key1, upper: key2, lowerOpen: open1, upperOpen: open2 } =
49 $ Fn.runFn4 _bound (extractForeign $ toKey key1) (extractForeign $ toKey key2) open1 open2
81 $ Fn.runFn4 _bound (extractForeign $ toKey key1) (extractForeign $ toKey key2) open1 open2
@@ -52,22 +84,34 @@ bound { lower: key1, upper: key2, lowerOpen: open1, upperOpen: open2 } =
52--------------------
84--------------------
53-- ATTRIBUTES
85-- ATTRIBUTES
87+-- | Returns lower bound if any.
55−lower :: KeyRange -> Maybe Key
89+ :: KeyRange
57 _lower >>> toMaybe >>> map Key
92 _lower >>> toMaybe >>> map Key
95+-- | Returns upper bound if any.
60−upper :: KeyRange -> Maybe Key
97+ :: KeyRange
62 _upper >>> toMaybe >>> map Key
100 _upper >>> toMaybe >>> map Key
103+-- | Returns true if the lower open flag is set, false otherwise.
65−lowerOpen :: KeyRange -> Boolean
104+lowerOpen
66lowerOpen =
107lowerOpen =
67 _lowerOpen
108 _lowerOpen
111+-- | Returns true if the upper open flag is set, false otherwise.
70−upperOpen :: KeyRange -> Boolean
112+upperOpen
71upperOpen =
115upperOpen =
72 _upperOpen
116 _upperOpen