77
88namespace ManagedCode . Database . SQLite ;
99
10- public class SQLiteDatabaseCollection < TId , TItem > : IDatabaseCollection < TId , TItem > where TItem : class , IItem < TId > , new ( )
10+ public class SQLiteDatabaseCollection < TId , TItem > : IDatabaseCollection < TId , TItem >
11+ where TItem : class , IItem < TId > , new ( )
1112{
1213 private readonly SQLiteConnection _database ;
1314
@@ -32,7 +33,7 @@ public void Dispose()
3233 public async Task < TItem ? > GetAsync ( TId id , CancellationToken cancellationToken = default )
3334 {
3435 await Task . Yield ( ) ;
35- return _database . Find < TItem > ( id ) ;
36+ return ExceptionCatcher . Execute ( ( ) => _database . Find < TItem > ( id ) ) ;
3637 }
3738
3839 #endregion
@@ -41,8 +42,8 @@ public void Dispose()
4142
4243 public async Task < long > CountAsync ( CancellationToken cancellationToken = default )
4344 {
44- await Task . Yield ( ) ;
45- return _database . Table < TItem > ( ) . LongCount ( ) ;
45+ var task = Task . Run ( ( ) => _database . Table < TItem > ( ) . LongCount ( ) , cancellationToken ) ;
46+ return await ExceptionCatcher . ExecuteAsync ( task ) ;
4647 }
4748
4849 #endregion
@@ -52,14 +53,18 @@ public async Task<long> CountAsync(CancellationToken cancellationToken = default
5253 public async Task < TItem > InsertAsync ( TItem item , CancellationToken cancellationToken = default )
5354 {
5455 await Task . Yield ( ) ;
55- var v = _database . Insert ( item ) ;
56- return item ;
56+
57+ return ExceptionCatcher . Execute ( ( ) =>
58+ {
59+ _database . Insert ( item ) ;
60+ return _database . Find < TItem > ( item . Id ) ;
61+ } ) ;
5762 }
5863
5964 public async Task < int > InsertAsync ( IEnumerable < TItem > items , CancellationToken cancellationToken = default )
6065 {
61- await Task . Yield ( ) ;
62- return _database . InsertAll ( items ) ;
66+ var task = Task . Run ( ( ) => _database . InsertAll ( items ) , cancellationToken ) ;
67+ return await ExceptionCatcher . ExecuteAsync ( task ) ;
6368 }
6469
6570 #endregion
@@ -69,21 +74,18 @@ public async Task<int> InsertAsync(IEnumerable<TItem> items, CancellationToken c
6974 public async Task < TItem > InsertOrUpdateAsync ( TItem item , CancellationToken cancellationToken = default )
7075 {
7176 await Task . Yield ( ) ;
72- _database . InsertOrReplace ( item ) ;
73- return item ;
77+
78+ return ExceptionCatcher . Execute ( ( ) =>
79+ {
80+ _database . InsertOrReplace ( item ) ;
81+ return _database . Find < TItem > ( item . Id ) ;
82+ } ) ;
7483 }
7584
7685 public async Task < int > InsertOrUpdateAsync ( IEnumerable < TItem > items , CancellationToken cancellationToken = default )
7786 {
78- await Task . Yield ( ) ;
79- var count = 0 ;
80-
81- foreach ( var item in items )
82- {
83- count += _database . InsertOrReplace ( item ) ;
84- }
85-
86- return count ;
87+ var task = Task . Run ( ( ) => items . Sum ( item => _database . InsertOrReplace ( item ) ) , cancellationToken ) ;
88+ return await ExceptionCatcher . ExecuteAsync ( task ) ;
8789 }
8890
8991 #endregion
@@ -93,20 +95,18 @@ public async Task<int> InsertOrUpdateAsync(IEnumerable<TItem> items, Cancellatio
9395 public async Task < TItem > UpdateAsync ( TItem item , CancellationToken cancellationToken = default )
9496 {
9597 await Task . Yield ( ) ;
96- _database . Update ( item ) ;
97- return item ;
98+
99+ return ExceptionCatcher . Execute ( ( ) =>
100+ {
101+ _database . Update ( item ) ;
102+ return _database . Find < TItem > ( item . Id ) ;
103+ } ) ;
98104 }
99105
100106 public async Task < int > UpdateAsync ( IEnumerable < TItem > items , CancellationToken cancellationToken = default )
101107 {
102- await Task . Yield ( ) ;
103- var count = 0 ;
104- foreach ( var item in items )
105- {
106- count += _database . Update ( item ) ;
107- }
108-
109- return count ;
108+ var task = Task . Run ( ( ) => _database . UpdateAll ( items ) , cancellationToken ) ;
109+ return await ExceptionCatcher . ExecuteAsync ( task ) ;
110110 }
111111
112112 #endregion
@@ -116,43 +116,31 @@ public async Task<int> UpdateAsync(IEnumerable<TItem> items, CancellationToken c
116116 public async Task < bool > DeleteAsync ( TId id , CancellationToken cancellationToken = default )
117117 {
118118 await Task . Yield ( ) ;
119- return _database . Delete < TItem > ( id ) != 0 ;
119+ return ExceptionCatcher . Execute ( ( ) => _database . Delete < TItem > ( id ) != 0 ) ;
120120 }
121121
122122 public async Task < bool > DeleteAsync ( TItem item , CancellationToken cancellationToken = default )
123123 {
124124 await Task . Yield ( ) ;
125- return _database . Delete ( item ) != 0 ;
125+ return ExceptionCatcher . Execute ( ( ) => _database . Delete < TItem > ( item ) != 0 ) ;
126126 }
127127
128128 public async Task < int > DeleteAsync ( IEnumerable < TId > ids , CancellationToken cancellationToken = default )
129129 {
130- await Task . Yield ( ) ;
131- var count = 0 ;
132- foreach ( var id in ids )
133- {
134- count += _database . Delete < TItem > ( id ) ;
135- }
136-
137- return count ;
130+ var task = Task . Run ( ( ) => ids . Sum ( id => _database . Delete < TItem > ( id ) ) , cancellationToken ) ;
131+ return await ExceptionCatcher . ExecuteAsync ( task ) ;
138132 }
139133
140134 public async Task < int > DeleteAsync ( IEnumerable < TItem > items , CancellationToken cancellationToken = default )
141135 {
142- await Task . Yield ( ) ;
143- var count = 0 ;
144- foreach ( var item in items )
145- {
146- count += _database . Delete < TItem > ( item . Id ) ;
147- }
148-
149- return count ;
136+ var task = Task . Run ( ( ) => items . Sum ( item => _database . Delete < TItem > ( item . Id ) ) , cancellationToken ) ;
137+ return await ExceptionCatcher . ExecuteAsync ( task ) ;
150138 }
151139
152140 public async Task < bool > DeleteCollectionAsync ( CancellationToken cancellationToken = default )
153141 {
154- await Task . Yield ( ) ;
155- return _database . DeleteAll < TItem > ( ) != 0 ;
142+ var task = Task . Run ( ( ) => _database . DeleteAll < TItem > ( ) != 0 , cancellationToken ) ;
143+ return await ExceptionCatcher . ExecuteAsync ( task ) ;
156144 }
157145
158146 #endregion
0 commit comments