From 808de4f3c3414160b3412cf1ad942266eb8642e7 Mon Sep 17 00:00:00 2001 From: KtorZ Date: Fri, 7 Jul 2017 12:57:31 +0200 Subject: [PATCH] change reference from Key to Foreign for FFI functions --- src/Database/IndexedDB/IDBFactory.purs | 6 +-- src/Database/IndexedDB/IDBIndex/Internal.purs | 32 ++++++++-------- src/Database/IndexedDB/IDBKeyRange.purs | 38 +++++++++++++------ 3 files changed, 45 insertions(+), 31 deletions(-) diff --git a/src/Database/IndexedDB/IDBFactory.purs b/src/Database/IndexedDB/IDBFactory.purs index 81e1aa9..d55846f 100644 --- a/src/Database/IndexedDB/IDBFactory.purs +++ b/src/Database/IndexedDB/IDBFactory.purs @@ -18,7 +18,7 @@ import Database.IndexedDB.Core -- INTERFACE -- -- Type alias for binding listeners to an initial open action. -type OpenRequest e = +type Callbacks e = { onBlocked :: Maybe (Eff (| e) Unit) , onUpgradeNeeded :: Maybe (Database -> Transaction -> Eff (| e) Unit) } @@ -55,7 +55,7 @@ open :: forall e e' . DatabaseName -> Maybe Version - -> OpenRequest e' + -> Callbacks e' -> Aff (idb :: IDB | e) Database open name mver req = Fn.runFn4 _open fromMaybe name mver req @@ -72,4 +72,4 @@ foreign import _deleteDatabase foreign import _open :: forall a e e' - . Fn4 (a -> Maybe a -> a) String (Maybe Int) (OpenRequest e') (Aff (idb :: IDB | e) Database) + . Fn4 (a -> Maybe a -> a) String (Maybe Int) (Callbacks e') (Aff (idb :: IDB | e) Database) diff --git a/src/Database/IndexedDB/IDBIndex/Internal.purs b/src/Database/IndexedDB/IDBIndex/Internal.purs index 00fd872..9698a16 100644 --- a/src/Database/IndexedDB/IDBIndex/Internal.purs +++ b/src/Database/IndexedDB/IDBIndex/Internal.purs @@ -4,17 +4,17 @@ module Database.IndexedDB.IDBIndex.Internal where import Prelude -import Control.Monad.Aff (Aff) -import Control.Monad.Eff (Eff) -import Control.Monad.Eff.Exception (Error) -import Data.Foreign (Foreign, unsafeFromForeign) -import Data.Function.Uncurried as Fn -import Data.Function.Uncurried (Fn2, Fn3, Fn4) -import Data.Maybe (Maybe) -import Data.Nullable (Nullable, toMaybe, toNullable) +import Control.Monad.Aff (Aff) +import Control.Monad.Eff (Eff) +import Control.Monad.Eff.Exception (Error) +import Data.Foreign (Foreign, unsafeFromForeign) +import Data.Function.Uncurried as Fn +import Data.Function.Uncurried (Fn2, Fn3, Fn4) +import Data.Maybe (Maybe) +import Data.Nullable (Nullable, toMaybe, toNullable) -import Database.IndexedDB.Core (IDB, CursorDirection, Index, Key, KeyCursor, KeyRange, - KeyPath, ObjectStore, ValueCursor) +import Database.IndexedDB.Core (IDB, CursorDirection, Index, Key, KeyCursor, KeyRange, KeyPath, ObjectStore, ValueCursor) +import Database.IndexedDB.IDBKey.Internal (class IDBKey, Key(..)) -------------------- @@ -166,10 +166,10 @@ instance idbIndexIndex :: IDBIndex Index where (toMaybe >>> map unsafeFromForeign) <$> Fn.runFn2 _get index range getAllKeys index range count = - Fn.runFn3 _getAllKeys index (toNullable range) (toNullable count) + map Key <$> Fn.runFn3 _getAllKeys index (toNullable range) (toNullable count) getKey index range = - toMaybe <$> Fn.runFn2 _getKey index range + (toMaybe >>> map Key) <$> Fn.runFn2 _getKey index range openCursor index range dir cb = Fn.runFn4 _openCursor index (toNullable range) (show dir) cb @@ -186,10 +186,10 @@ instance idbIndexObjectStore :: IDBIndex ObjectStore where (toMaybe >>> map unsafeFromForeign) <$> Fn.runFn2 _get store range getAllKeys store range count = - Fn.runFn3 _getAllKeys store (toNullable range) (toNullable count) + map Key <$> Fn.runFn3 _getAllKeys store (toNullable range) (toNullable count) getKey store range = - toMaybe <$> Fn.runFn2 _getKey store range + (toMaybe >>> map Key) <$> Fn.runFn2 _getKey store range openCursor store range dir cb = Fn.runFn4 _openCursor store (toNullable range) (show dir) cb @@ -238,12 +238,12 @@ foreign import _get foreign import _getAllKeys :: forall index e - . Fn3 index (Nullable KeyRange) (Nullable Int) (Aff (idb :: IDB | e) (Array Key)) + . Fn3 index (Nullable KeyRange) (Nullable Int) (Aff (idb :: IDB | e) (Array Foreign)) foreign import _getKey :: forall index e - . Fn2 index KeyRange (Aff (idb :: IDB | e) (Nullable Key)) + . Fn2 index KeyRange (Aff (idb :: IDB | e) (Nullable Foreign)) foreign import _openCursor diff --git a/src/Database/IndexedDB/IDBKeyRange.purs b/src/Database/IndexedDB/IDBKeyRange.purs index 97e21e3..f68b91b 100644 --- a/src/Database/IndexedDB/IDBKeyRange.purs +++ b/src/Database/IndexedDB/IDBKeyRange.purs @@ -29,8 +29,7 @@ import Database.IndexedDB.IDBKey.Internal (class IDBKey, Key(..), toKey, extract -- | The IDBKeyRange interface represents a key range. class IDBKeyRange range where -- | Returns true if key is included in the range, and false otherwise. - includes :: range -> Key -> Boolean - + includes :: forall k. (IDBKey k) => range -> k -> Boolean -- | Type alias for open type Open = Boolean @@ -121,34 +120,49 @@ upperOpen = -- instance idbKeyRangeKeyRange :: IDBKeyRange KeyRange where includes range = - extractForeign >>> Fn.runFn2 _includes range + toKey >>> extractForeign >>> Fn.runFn2 _includes range -------------------- -- FFI -- -foreign import _bound :: Fn4 Foreign Foreign Boolean Boolean (Nullable KeyRange) +foreign import _bound + :: Fn4 Foreign Foreign Boolean Boolean (Nullable KeyRange) -foreign import _includes :: forall range. Fn2 range Foreign Boolean +foreign import _includes + :: forall range + . Fn2 range Foreign Boolean -foreign import _lower :: KeyRange -> Nullable Foreign +foreign import _lower + :: KeyRange + -> Nullable Foreign -foreign import _lowerBound :: Fn2 Foreign Boolean KeyRange +foreign import _lowerBound + :: Fn2 Foreign Boolean KeyRange -foreign import _lowerOpen :: KeyRange -> Boolean +foreign import _lowerOpen + :: KeyRange + -> Boolean -foreign import _only :: Foreign -> KeyRange +foreign import _only + :: Foreign + -> KeyRange -foreign import _upper :: KeyRange -> Nullable Foreign +foreign import _upper + :: KeyRange + -> Nullable Foreign -foreign import _upperBound :: Fn2 Foreign Boolean KeyRange +foreign import _upperBound + :: Fn2 Foreign Boolean KeyRange -foreign import _upperOpen :: KeyRange -> Boolean +foreign import _upperOpen + :: KeyRange + -> Boolean