2
2
/// <reference path="../Helpers/Util.ts" />
3
3
4
4
namespace IndexedDB {
5
- export class BaseRepository < TObjectStore extends IDBObjectStore , TKey extends string | number > implements IRepository < TObjectStore , TKey > {
6
- private _ObjectStore : IDBObjectStore ;
7
- constructor ( ObjectStore : TObjectStore ) {
8
- this . _ObjectStore = ObjectStore ;
5
+ export class BaseRepository < TDBContext extends IDBContext , TKey extends string | number > implements IRepository < TDBContext , TKey > {
6
+ private _DBContext : TDBContext ;
7
+ private _StoreName : string ;
8
+ constructor ( ObjectStore : TDBContext , StoreName : string ) {
9
+ this . _DBContext = ObjectStore ;
10
+ this . _StoreName = StoreName ;
9
11
}
10
12
11
13
public Add ( TObject : any ) : Promise < any > {
12
- var promise = Util . CreatePromise ( ) ;
13
- var creationRequest = this . _ObjectStore . add ( TObject ) ;
14
- creationRequest . onerror = ( event : any ) => {
15
- promise . reject ( ) ;
16
- Util . Log ( "Fail" ) ;
17
- }
18
- creationRequest . onsuccess = ( event : any ) => {
19
- promise . resolve ( ) ;
20
- Util . Log ( "Fail" ) ;
21
- }
22
- return promise ;
14
+ var self = this ;
15
+ return this . _DBContext . Begin ( ) . then ( function ( db : IDBDatabase ) {
16
+ var promise = Util . CreatePromise ( ) ;
17
+ var transaction = db . transaction ( [ self . _StoreName ] , "readwrite" ) ;
18
+ var objectStore = transaction . objectStore ( self . _StoreName ) ;
19
+ var request = objectStore . add ( TObject ) ;
20
+ request . onerror = ( event : any ) => {
21
+ promise . reject ( ) ;
22
+ Util . Log ( "Fail" ) ;
23
+ }
24
+ transaction . oncomplete = ( event : any ) => {
25
+ promise . resolve ( ) ;
26
+ Util . Log ( "success" ) ;
27
+ }
28
+ return promise ;
29
+ } , this . ErrorHandler )
30
+
23
31
}
24
32
25
33
public Update ( TObject : any ) : Promise < any > {
26
- var promise = Util . CreatePromise ( ) ;
27
- var creationRequest = this . _ObjectStore . put ( TObject ) ;
28
- creationRequest . onerror = ( event : any ) => {
29
- promise . reject ( ) ;
30
- Util . Log ( "Fail" ) ;
31
- }
32
- creationRequest . onsuccess = ( event : any ) => {
33
- promise . resolve ( ) ;
34
- Util . Log ( "Fail" ) ;
35
- }
36
- return promise ;
34
+ var self = this ;
35
+ return this . _DBContext . Begin ( ) . then ( function ( db : IDBDatabase ) {
36
+ var promise = Util . CreatePromise ( ) ;
37
+ var transaction = db . transaction ( [ self . _StoreName ] , "readwrite" ) ;
38
+ var objectStore = transaction . objectStore ( self . _StoreName ) ;
39
+ objectStore . put ( TObject ) ;
40
+ transaction . onerror = ( event : any ) => {
41
+ promise . reject ( ) ;
42
+ Util . Log ( "Fail" ) ;
43
+ }
44
+ transaction . oncomplete = ( event : any ) => {
45
+ promise . resolve ( ) ;
46
+ Util . Log ( "success" ) ;
47
+ }
48
+ return promise ;
49
+ } , this . ErrorHandler ) ;
50
+
37
51
}
38
52
39
53
public Delete ( Key : TKey ) : Promise < any > {
40
- var promise = Util . CreatePromise ( ) ;
41
- var deleteRequest = this . _ObjectStore . delete ( Key ) ;
42
- deleteRequest . onerror = ( event : any ) => {
43
- promise . reject ( ) ;
44
- Util . Log ( "Fail" ) ;
45
- }
46
- deleteRequest . onsuccess = ( event : any ) => {
47
- promise . resolve ( ) ;
48
- Util . Log ( "success" ) ;
49
- }
50
- return promise ;
54
+ var self = this ;
55
+ return this . _DBContext . Begin ( ) . then ( function ( db : IDBDatabase ) {
56
+ var promise = Util . CreatePromise ( ) ;
57
+ var transaction = db . transaction ( [ self . _StoreName ] , "readwrite" ) ;
58
+ var objectStore = transaction . objectStore ( self . _StoreName ) ;
59
+ objectStore . delete ( Key ) ;
60
+ transaction . onerror = ( event : any ) => {
61
+ promise . reject ( ) ;
62
+ Util . Log ( "Fail" ) ;
63
+ }
64
+ transaction . oncomplete = ( event : any ) => {
65
+ promise . resolve ( ) ;
66
+ Util . Log ( "success" ) ;
67
+ }
68
+ return promise ;
69
+ } , this . ErrorHandler )
51
70
}
52
71
53
72
public Get ( TKey : any ) : Promise < any > {
54
- var promise = Util . CreatePromise ( ) ;
55
- var retrievalRequest = this . _ObjectStore . get ( TKey ) ;
56
- retrievalRequest . onsuccess = function ( evt : any ) {
57
- var data = evt . target . result ;
58
- Util . Log ( "successfully" ) ;
59
- promise . resolve ( data ) ;
60
- } ;
61
- retrievalRequest . onerror = function ( ) {
62
- promise . reject ( ) ;
63
- Util . Log ( "Fail" ) ;
64
- } ;
65
- return promise ;
73
+ var self = this ;
74
+ return this . _DBContext . Begin ( ) . then ( function ( db : IDBDatabase ) {
75
+ var promise = Util . CreatePromise ( ) ;
76
+ var transaction = db . transaction ( self . _StoreName , IDBTransaction . READ_ONLY ) ;
77
+ var objectStore = transaction . objectStore ( self . _StoreName ) ;
78
+ var retrievalRequest = objectStore . get ( TKey ) ;
79
+ retrievalRequest . onsuccess = function ( evt : any ) {
80
+ var data = evt . target . result ;
81
+ Util . Log ( "successfully" ) ;
82
+ promise . resolve ( data ) ;
83
+ } ;
84
+ retrievalRequest . onerror = function ( ) {
85
+ promise . reject ( ) ;
86
+ Util . Log ( "Fail" ) ;
87
+ } ;
88
+ return promise ;
89
+ } , this . ErrorHandler )
66
90
}
67
91
68
92
public GetAll ( ) : Promise < any > {
69
- var dbCollection : any = [ ] ;
70
- var promise = Util . CreatePromise ( ) ;
71
- var getAllRequest = this . _ObjectStore . openCursor ( ) ;
72
- getAllRequest . onsuccess = function ( evt : any ) {
73
- var cursor = evt . target . result ;
74
- if ( cursor ) {
75
- dbCollection . push ( cursor . value ) ;
76
- cursor . continue ( )
77
- } else {
93
+ var self = this ;
94
+ return this . _DBContext . Begin ( ) . then ( function ( db : IDBDatabase ) {
95
+ var dbCollection : any = [ ] ;
96
+ var promise = Util . CreatePromise ( ) ;
97
+ var transaction = db . transaction ( self . _StoreName , IDBTransaction . READ_ONLY ) ;
98
+ var objectStore = transaction . objectStore ( self . _StoreName ) ;
99
+ objectStore . openCursor ( ) . onsuccess = function ( evt : any ) {
100
+ var cursor = evt . target . result ;
101
+ if ( cursor ) {
102
+ dbCollection . push ( cursor . value ) ;
103
+ cursor . continue ( )
104
+ }
105
+ } ;
106
+ transaction . oncomplete = ( event : any ) => {
78
107
Util . Log ( "success" ) ;
108
+ Util . Log ( dbCollection ) ;
79
109
promise . resolve ( dbCollection ) ;
80
110
}
81
- } ;
82
- getAllRequest . onerror = function ( ) {
83
- promise . reject ( ) ;
84
- Util . Log ( "Fail" ) ;
85
- } ;
86
- return promise ;
111
+ transaction . onerror = function ( ) {
112
+ promise . reject ( ) ;
113
+ Util . Log ( "Fail" ) ;
114
+ } ;
115
+ return promise ;
116
+ } , this . ErrorHandler )
117
+ }
118
+
119
+ public ErrorHandler ( ex : string ) {
120
+ Util . Log ( ex ) ;
87
121
}
88
122
}
89
123
}
0 commit comments