@@ -27,6 +27,7 @@ angular.module('xc.indexedDB', []).provider('$indexedDB', function() {
27
27
module . db = null ;
28
28
module . dbPromise = null ;
29
29
module . outStandingTransactionCount = 0 ;
30
+ module . upgradesByVersion = { }
30
31
31
32
/** predefined callback functions, can be customized in angular.config */
32
33
module . onTransactionComplete = function ( e ) {
@@ -76,8 +77,8 @@ angular.module('xc.indexedDB', []).provider('$indexedDB', function() {
76
77
* @returns {object } this
77
78
*/
78
79
module . upgradeDatabase = function ( newVersion , callback ) {
79
- module . dbVersion = newVersion ;
80
- module . upgradeCallback = callback ;
80
+ module . upgradesByVersion [ newVersion ] = callback ;
81
+ module . dbVersion = Math . max . apply ( null , Object . keys ( module . upgradesByVersion ) )
81
82
return this ;
82
83
} ;
83
84
@@ -91,6 +92,16 @@ angular.module('xc.indexedDB', []).provider('$indexedDB', function() {
91
92
}
92
93
} ;
93
94
} ;
95
+
96
+ var applyNeededUpgrades = function ( oldVersion , event , db , tx ) {
97
+ for ( var version in module . upgradesByVersion ) {
98
+ if ( ! module . upgradesByVersion . hasOwnProperty ( version ) || version <= oldVersion ) {
99
+ continue ;
100
+ }
101
+ console . log ( "Running upgrade : " + version + " from " + oldVersion ) ;
102
+ module . upgradesByVersion [ version ] ( event , db , tx )
103
+ }
104
+ } ;
94
105
95
106
module . $get = [ '$q' , '$rootScope' , function ( $q , $rootScope ) {
96
107
/**
@@ -138,7 +149,7 @@ angular.module('xc.indexedDB', []).provider('$indexedDB', function() {
138
149
var db = e . target . result , tx = e . target . transaction ;
139
150
console . log ( 'upgrading database "' + db . name + '" from version ' + e . oldVersion +
140
151
' to version ' + e . newVersion + '...' ) ;
141
- module . upgradeCallback && module . upgradeCallback ( e , db , tx ) ;
152
+ applyNeededUpgrades ( e . oldVersion , e , db , tx ) ;
142
153
} ;
143
154
}
144
155
0 commit comments