@@ -6,41 +6,40 @@ import 'update_notification.dart';
6
6
7
7
/// Mixin to provide default query functionality.
8
8
///
9
- /// Classes using this need to implement [SqliteConnection.readLock]
10
- /// and [SqliteConnection.writeLock] .
9
+ /// Classes using this need to implement [SqliteConnection.lock] .
11
10
mixin SqliteQueries implements SqliteWriteContext , SqliteConnection {
12
11
/// Broadcast stream that is notified of any table updates
13
12
Stream <UpdateNotification >? get updates;
14
13
15
14
@override
16
15
Future <sqlite.ResultSet > execute (String sql,
17
16
[List <Object ?> parameters = const []]) async {
18
- return writeLock ((ctx) async {
17
+ return lock ((ctx) async {
19
18
return ctx.execute (sql, parameters);
20
19
}, debugContext: 'execute()' );
21
20
}
22
21
23
22
@override
24
23
Future <sqlite.ResultSet > getAll (String sql,
25
24
[List <Object ?> parameters = const []]) {
26
- return readLock ((ctx) async {
25
+ return lock ((ctx) async {
27
26
return ctx.getAll (sql, parameters);
28
- }, debugContext: 'getAll()' );
27
+ }, readOnly : true , debugContext: 'getAll()' );
29
28
}
30
29
31
30
@override
32
31
Future <sqlite.Row > get (String sql, [List <Object ?> parameters = const []]) {
33
- return readLock ((ctx) async {
32
+ return lock ((ctx) async {
34
33
return ctx.get (sql, parameters);
35
- }, debugContext: 'get()' );
34
+ }, readOnly : true , debugContext: 'get()' );
36
35
}
37
36
38
37
@override
39
38
Future <sqlite.Row ?> getOptional (String sql,
40
39
[List <Object ?> parameters = const []]) {
41
- return readLock ((ctx) async {
40
+ return lock ((ctx) async {
42
41
return ctx.getOptional (sql, parameters);
43
- }, debugContext: 'getOptional()' );
42
+ }, readOnly : true , debugContext: 'getOptional()' );
44
43
}
45
44
46
45
@override
@@ -102,6 +101,7 @@ mixin SqliteQueries implements SqliteWriteContext, SqliteConnection {
102
101
Future <T > readTransaction <T >(
103
102
Future <T > Function (SqliteReadContext tx) callback,
104
103
{Duration ? lockTimeout}) async {
104
+ // ignore: deprecated_member_use_from_same_package
105
105
return readLock ((ctx) async {
106
106
return await internalReadTransaction (ctx, callback);
107
107
}, lockTimeout: lockTimeout, debugContext: 'readTransaction()' );
@@ -111,6 +111,7 @@ mixin SqliteQueries implements SqliteWriteContext, SqliteConnection {
111
111
Future <T > writeTransaction <T >(
112
112
Future <T > Function (SqliteWriteContext tx) callback,
113
113
{Duration ? lockTimeout}) async {
114
+ // ignore: deprecated_member_use_from_same_package
114
115
return writeLock ((ctx) async {
115
116
return await internalWriteTransaction (ctx, callback);
116
117
}, lockTimeout: lockTimeout, debugContext: 'writeTransaction()' );
@@ -140,4 +141,29 @@ mixin SqliteQueries implements SqliteWriteContext, SqliteConnection {
140
141
return tx.executeBatch (sql, parameterSets);
141
142
});
142
143
}
144
+
145
+ @override
146
+ Future <T > lock <T >(Future <T > Function (SqliteWriteContext tx) callback,
147
+ {bool ? readOnly, String ? debugContext}) {
148
+ if (readOnly == true ) {
149
+ // ignore: deprecated_member_use_from_same_package
150
+ return readLock ((ctx) => callback (ctx as SqliteWriteContext ),
151
+ debugContext: debugContext);
152
+ } else {
153
+ // ignore: deprecated_member_use_from_same_package
154
+ return writeLock (callback, debugContext: debugContext);
155
+ }
156
+ }
157
+
158
+ @override
159
+ Future <T > transaction <T >(Future <T > Function (SqliteWriteContext tx) callback,
160
+ {bool ? readOnly}) {
161
+ if (readOnly == true ) {
162
+ // ignore: deprecated_member_use_from_same_package
163
+ return readTransaction ((ctx) => callback (ctx as SqliteWriteContext ));
164
+ } else {
165
+ // ignore: deprecated_member_use_from_same_package
166
+ return writeTransaction (callback);
167
+ }
168
+ }
143
169
}
0 commit comments