@@ -5,11 +5,18 @@ namespace IndexedDB {
5
5
export abstract class DbContext implements IDBContext {
6
6
private _dbNative : IDBFactory ;
7
7
private _version = 1 ;
8
+ private _DBPromise : Promise < any > ;
8
9
constructor ( databaseNative : IDBFactory , public dbName ?: string ) {
9
10
this . _dbNative = databaseNative ;
10
11
this . dbName = this . dbName || 'SampleDB' ;
11
12
}
12
13
public Begin = function ( ) {
14
+ if ( ! this . _DBPromise ) {
15
+ this . _DBPromise = this . begin ( ) ;
16
+ }
17
+ return this . _DBPromise ;
18
+ }
19
+ public begin = function ( ) {
13
20
var self = this ;
14
21
var creationRequest = self . _dbNative . open ( this . dbName , this . Upgrade != undefined ? this . Upgrade . Version : this . _version ) ;
15
22
var promise = Util . CreatePromise ( ) ;
@@ -28,9 +35,9 @@ namespace IndexedDB {
28
35
self . Upgrade . UpgradeSetting . call ( self , db ) ;
29
36
}
30
37
}
31
- creationRequest . onerror = ( ) => {
38
+ creationRequest . onerror = ( event : any ) => {
32
39
Util . Log ( 'Error while opening the database' ) ;
33
- promise . reject ( ) ;
40
+ promise . reject ( event ) ;
34
41
}
35
42
36
43
return promise ;
@@ -65,11 +72,17 @@ namespace IndexedDB {
65
72
66
73
public CreateObjectSet ( databse : IDBDatabase , model : IModelConfig ) : void {
67
74
if ( ! databse . objectStoreNames . contains ( model . name ) ) {
68
- var idbOSConf = { keyPath : model . keyPath , autoIncrement : true } ;
75
+ var idbOSConf = { keyPath : model . keyPath , autoIncrement : true } ;
69
76
if ( typeof model . autoIncrement !== 'undefined' ) {
70
77
idbOSConf . autoIncrement = model . autoIncrement ;
71
78
}
72
- databse . createObjectStore ( model . name , idbOSConf ) ;
79
+ var os = databse . createObjectStore ( model . name , idbOSConf ) ;
80
+
81
+ if ( ( typeof model . indexes !== 'undefined' ) && ( model . indexes . length > 0 ) ) {
82
+ for ( var i = 0 ; i < model . indexes . length ; i ++ ) {
83
+ os . createIndex ( model . indexes [ i ] . name , model . indexes [ i ] . keyPath , model . indexes [ i ] . options ) ;
84
+ }
85
+ }
73
86
}
74
87
}
75
88
0 commit comments