change reference from Key to Foreign for FFI functions

This commit is contained in:
KtorZ 2017-07-07 12:57:31 +02:00
parent 3705bbc48a
commit 808de4f3c3
No known key found for this signature in database
GPG Key ID: 3F72E8BC2894C015
3 changed files with 45 additions and 31 deletions

View File

@ -18,7 +18,7 @@ import Database.IndexedDB.Core
-- INTERFACE -- INTERFACE
-- --
-- Type alias for binding listeners to an initial open action. -- Type alias for binding listeners to an initial open action.
type OpenRequest e = type Callbacks e =
{ onBlocked :: Maybe (Eff (| e) Unit) { onBlocked :: Maybe (Eff (| e) Unit)
, onUpgradeNeeded :: Maybe (Database -> Transaction -> Eff (| e) Unit) , onUpgradeNeeded :: Maybe (Database -> Transaction -> Eff (| e) Unit)
} }
@ -55,7 +55,7 @@ open
:: forall e e' :: forall e e'
. DatabaseName . DatabaseName
-> Maybe Version -> Maybe Version
-> OpenRequest e' -> Callbacks e'
-> Aff (idb :: IDB | e) Database -> Aff (idb :: IDB | e) Database
open name mver req = open name mver req =
Fn.runFn4 _open fromMaybe name mver req Fn.runFn4 _open fromMaybe name mver req
@ -72,4 +72,4 @@ foreign import _deleteDatabase
foreign import _open foreign import _open
:: forall a e e' :: 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)

View File

@ -4,17 +4,17 @@ module Database.IndexedDB.IDBIndex.Internal where
import Prelude import Prelude
import Control.Monad.Aff (Aff) import Control.Monad.Aff (Aff)
import Control.Monad.Eff (Eff) import Control.Monad.Eff (Eff)
import Control.Monad.Eff.Exception (Error) import Control.Monad.Eff.Exception (Error)
import Data.Foreign (Foreign, unsafeFromForeign) import Data.Foreign (Foreign, unsafeFromForeign)
import Data.Function.Uncurried as Fn import Data.Function.Uncurried as Fn
import Data.Function.Uncurried (Fn2, Fn3, Fn4) import Data.Function.Uncurried (Fn2, Fn3, Fn4)
import Data.Maybe (Maybe) import Data.Maybe (Maybe)
import Data.Nullable (Nullable, toMaybe, toNullable) import Data.Nullable (Nullable, toMaybe, toNullable)
import Database.IndexedDB.Core (IDB, CursorDirection, Index, Key, KeyCursor, KeyRange, import Database.IndexedDB.Core (IDB, CursorDirection, Index, Key, KeyCursor, KeyRange, KeyPath, ObjectStore, ValueCursor)
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 (toMaybe >>> map unsafeFromForeign) <$> Fn.runFn2 _get index range
getAllKeys index range count = 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 = getKey index range =
toMaybe <$> Fn.runFn2 _getKey index range (toMaybe >>> map Key) <$> Fn.runFn2 _getKey index range
openCursor index range dir cb = openCursor index range dir cb =
Fn.runFn4 _openCursor index (toNullable range) (show 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 (toMaybe >>> map unsafeFromForeign) <$> Fn.runFn2 _get store range
getAllKeys store range count = 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 = getKey store range =
toMaybe <$> Fn.runFn2 _getKey store range (toMaybe >>> map Key) <$> Fn.runFn2 _getKey store range
openCursor store range dir cb = openCursor store range dir cb =
Fn.runFn4 _openCursor store (toNullable range) (show dir) cb Fn.runFn4 _openCursor store (toNullable range) (show dir) cb
@ -238,12 +238,12 @@ foreign import _get
foreign import _getAllKeys foreign import _getAllKeys
:: forall index e :: 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 foreign import _getKey
:: forall index e :: forall index e
. Fn2 index KeyRange (Aff (idb :: IDB | e) (Nullable Key)) . Fn2 index KeyRange (Aff (idb :: IDB | e) (Nullable Foreign))
foreign import _openCursor foreign import _openCursor

View File

@ -29,8 +29,7 @@ import Database.IndexedDB.IDBKey.Internal (class IDBKey, Key(..), toKey, extract
-- | The IDBKeyRange interface represents a key range. -- | The IDBKeyRange interface represents a key range.
class IDBKeyRange range where class IDBKeyRange range where
-- | Returns true if key is included in the range, and false otherwise. -- | 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 alias for open
type Open = Boolean type Open = Boolean
@ -121,34 +120,49 @@ upperOpen =
-- --
instance idbKeyRangeKeyRange :: IDBKeyRange KeyRange where instance idbKeyRangeKeyRange :: IDBKeyRange KeyRange where
includes range = includes range =
extractForeign >>> Fn.runFn2 _includes range toKey >>> extractForeign >>> Fn.runFn2 _includes range
-------------------- --------------------
-- FFI -- 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