Skip to content

Commit c03b26d

Browse files
committed
Added ExceptionCatcher to SQLiteDatabaseCollection
1 parent 316728d commit c03b26d

1 file changed

Lines changed: 37 additions & 49 deletions

File tree

‎ManagedCode.Database.SQLite/SQLiteDatabaseCollection.cs‎

Lines changed: 37 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77

88
namespace 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

Comments
 (0)