git.iko.soy/purescript-indexed-DB
on master help sign in
provide oldVersion metadata as part of the onUpgradeNeeded callback
commitc64384da82f6208407fd92611c292e386da630bd authorKtorZ <matthias.benkort@gmail.com> dateTue 7 Nov 2017, 09:54 (9 years ago) parent51b48b6
3 files changed+24−18
src/Database/IndexedDB/IDBFactory.js+5−1 src/Database/IndexedDB/IDBFactory.purs+1−1 test/Main.purs+18−16
src/Database/IndexedDB/IDBFactory.js+5−1
@@ -14,6 +14,9 @@ const noOp2 = function noOp2() {
1414 return noOp;
1515};
1616
17+const noOp3 = function noOp3() {
18+ return noOp2;
19+};
1720
1821exports._deleteDatabase = function _deleteDatabase(name) {
1922 return function aff(success, error) {
@@ -46,7 +49,8 @@ exports._open = function _open(fromMaybe, name, mver, req) {
4649 };
4750
4851 request.onupgradeneeded = function onUpgradeNeeded(e) {
49− fromMaybe(noOp2)(req.onUpgradeNeeded)(e.target.result)(e.target.transaction)();
52+ const meta = { oldVersion: e.oldVersion };
53+ fromMaybe(noOp3)(req.onUpgradeNeeded)(e.target.result)(e.target.transaction)(meta)();
5054 };
5155
5256 request.onerror = errorHandler(error);
src/Database/IndexedDB/IDBFactory.purs+1−1
@@ -30,7 +30,7 @@ import Database.IndexedDB.Core
3030-- Type alias for binding listeners to an initial open action.
3131type Callbacks e =
3232 { onBlocked :: Maybe (Eff (| e) Unit)
33− , onUpgradeNeeded :: Maybe (Database -> Transaction -> Eff (| e) Unit)
33+ , onUpgradeNeeded :: Maybe (Database -> Transaction -> { oldVersion :: Int } -> Eff (| e) Unit)
3434 }
3535
3636
test/Main.purs+18−16
@@ -87,23 +87,25 @@ main = runMocha do
8787 }
8888 tearDown name version db
8989
90−
9190 it "open + onUpgradeNeed" do
9291 let name = "db-upgrade-needed"
9392 version = 1
94− callback var db _ = do
95− _ <- launchAff $ modifyVar (const $ IDBDatabase.name db) var
93+ callback (Tuple varName varVersion) db _ { oldVersion } = do
94+ _ <- launchAff $ modifyVar (const $ IDBDatabase.name db) varName
95+ _ <- launchAff $ modifyVar (const $ oldVersion) varVersion
9696 pure unit
97− var <- makeVar' "-"
98− db <- IDBFactory.open name Nothing
99− { onUpgradeNeeded : Just (callback var)
97+ varName <- makeVar' "-"
98+ varVersion <- makeVar' (-1)
99+ db <- IDBFactory.open name Nothing
100+ { onUpgradeNeeded : Just (callback (Tuple varName varVersion))
100101 , onBlocked : Nothing
101102 }
102− name <- peekVar var
103− name `shouldEqual` name
103+ name' <- peekVar varName
104+ version' <- peekVar varVersion
105+ name' `shouldEqual` name
106+ version' `shouldEqual` 0
104107 tearDown name version db
105108
106−
107109 it "open + onBlocked" do
108110 let name = "db-blocked"
109111 version = 14
@@ -124,8 +126,8 @@ main = runMocha do
124126 { onUpgradeNeeded : Nothing
125127 , onBlocked : Just (callback var)
126128 }
127− name <- peekVar var
128− name `shouldEqual` name
129+ name' <- peekVar var
130+ name' `shouldEqual` name
129131 tearDown name version db02
130132
131133 describe "IDBKeyRange" do
@@ -289,7 +291,7 @@ main = runMocha do
289291 pure unit
290292
291293 setup storeParams = do
292− let onUpgradeNeeded var db _ = launchAff' do
294+ let onUpgradeNeeded var db _ _ = launchAff' do
293295 store <- IDBDatabase.createObjectStore db "store" storeParams
294296 _ <- putVar var { db, store }
295297 pure unit
@@ -327,7 +329,7 @@ main = runMocha do
327329 tearDown db
328330
329331 it "deleteObjectStore" do
330− let onUpgradeNeeded var db _ = launchAff' do
332+ let onUpgradeNeeded var db _ _ = launchAff' do
331333 _ <- IDBDatabase.deleteObjectStore db "store"
332334 putVar var true
333335
@@ -350,7 +352,7 @@ main = runMocha do
350352 pure unit
351353
352354 setup { storeParams, onUpgradeNeeded } = do
353− let onUpgradeNeeded' var db _ = launchAff' do
355+ let onUpgradeNeeded' var db _ _ = launchAff' do
354356 store <- IDBDatabase.createObjectStore db "store" storeParams
355357 liftEff $ maybe (pure unit) id (onUpgradeNeeded <*> pure db <*> pure store)
356358 putVar var { db, store }
@@ -506,7 +508,7 @@ main = runMocha do
506508 , onUpgradeNeeded :: Maybe (Database -> Transaction -> Index -> Eff (idb :: IDB, avar :: AVAR, exception :: EXCEPTION | e') Unit)
507509 } -> Aff (idb :: IDB, avar :: AVAR | e) { db :: Database, index :: Index, store :: ObjectStore }
508510 setup { storeParams, indexParams, values, keyPath, onUpgradeNeeded } = do
509− let onUpgradeNeeded' var db tx = launchAff' do
511+ let onUpgradeNeeded' var db tx _ = launchAff' do
510512 store <- IDBDatabase.createObjectStore db "store" storeParams
511513 _ <- traverse (uncurry (IDBObjectStore.add store)) values
512514 index <- IDBObjectStore.createIndex store "index" keyPath indexParams
@@ -844,7 +846,7 @@ main = runMocha do
844846 , onUpgradeNeeded :: Maybe (Database -> Transaction -> Index -> Eff (idb :: IDB, avar :: AVAR, exception :: EXCEPTION | e') Unit)
845847 } -> Aff (idb :: IDB, avar :: AVAR | e) { db :: Database, index :: Index, store :: ObjectStore }
846848 setup { storeParams, indexParams, values, keyPath, onUpgradeNeeded } = do
847− let onUpgradeNeeded' var db tx = launchAff' do
849+ let onUpgradeNeeded' var db tx _ = launchAff' do
848850 store <- IDBDatabase.createObjectStore db "store" storeParams
849851 _ <- traverse (uncurry (IDBObjectStore.add store)) values
850852 index <- IDBObjectStore.createIndex store "index" keyPath indexParams