@@ -4,12 +4,16 @@ module Database.IndexedDB.IDBDatabase
44 , name
55 , objectStoreNames
66 , version
7+ , onAbort
8+ , onClose
9+ , onError
10+ , onVersionChange
711 ) where
812
913import Prelude (Unit, show)
1014
1115import Control.Monad.Eff (Eff)
12−import Control.Monad.Eff.Exception (EXCEPTION)
16+import Control.Monad.Eff.Exception (EXCEPTION, Error)
1317import Data.Function.Uncurried as Fn
1418import Data.Function.Uncurried (Fn2, Fn3, Fn4)
1519
@@ -51,7 +55,24 @@ version =
5155--------------------
5256-- EVENT HANDLERS
5357--
54−-- onAbort :: forall e. Database -> Eff (idb :: IDB, exception :: EXCEPTION | e) Unit -> Eff (idb :: IDB, exception :: EXCEPTION | e) Unit
58+onAbort :: forall e e'. Database -> Eff ( | e') Unit -> Eff (idb :: IDB | e) Unit
59+onAbort db f =
60+ Fn.runFn2 _onAbort db f
61+
62+
63+onClose :: forall e e'. Database -> Eff ( | e') Unit -> Eff (idb :: IDB | e) Unit
64+onClose db f =
65+ Fn.runFn2 _onClose db f
66+
67+
68+onError :: forall e e'. Database -> (Error -> Eff ( | e') Unit) -> Eff (idb :: IDB | e) Unit
69+onError db f =
70+ Fn.runFn2 _onError db f
71+
72+
73+onVersionChange :: forall e e'. Database -> ({ oldVersion :: Int, newVersion :: Int } -> Eff ( | e') Unit) -> Eff (idb :: IDB | e) Unit
74+onVersionChange db f =
75+ Fn.runFn2 _onVersionChange db f
5576
5677
5778
@@ -90,6 +111,18 @@ foreign import _name :: Database -> String
90111foreign import _objectStoreNames :: Database -> Array String
91112
92113
114+foreign import _onAbort :: forall db e e'. Fn2 db (Eff ( | e') Unit) (Eff (idb :: IDB | e) Unit)
115+
116+
117+foreign import _onClose :: forall db e e'. Fn2 db (Eff ( | e') Unit) (Eff (idb :: IDB | e) Unit)
118+
119+
120+foreign import _onError :: forall db e e'. Fn2 db (Error -> Eff ( | e') Unit) (Eff (idb :: IDB | e) Unit)
121+
122+
123+foreign import _onVersionChange :: forall db e e'. Fn2 db ({ oldVersion :: Int, newVersion :: Int } -> Eff ( | e') Unit) (Eff (idb :: IDB | e) Unit)
124+
125+
93126foreign import _transaction :: forall db e. Fn4 (db -> String) db (Array String) TransactionMode (Eff (idb :: IDB, exception :: EXCEPTION | e) Transaction)
94127
95128