Skip to content

Commit 8d6ab9a

Browse files
committed
Clean up some async code
1 parent 3da21f0 commit 8d6ab9a

File tree

1 file changed

+16
-24
lines changed

1 file changed

+16
-24
lines changed

lib/src/query.dart

Lines changed: 16 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -40,36 +40,35 @@ class Query extends Object with _ConnectionHelpers {
4040

4141
var cnx = await _getConnection();
4242
cnx.autoRelease = !retainConnection;
43-
var c = new Completer<_PreparedQuery>();
4443
_log.fine("Got cnx#${cnx.number}");
45-
if (_useCachedQuery(cnx, c)) {
44+
var preparedQuery = _useCachedQuery(cnx);
45+
if (preparedQuery != null) {
4646
if (!retainConnection) {
4747
// didn't actually use the connection, so the auto-release
4848
// mechanism will never get fired, so we'd better give up
4949
// on the connection now
5050
cnx.release();
5151
}
52+
return preparedQuery;
5253
} else {
53-
_prepareAndCacheQuery(cnx, c, retainConnection);
54+
return await _prepareAndCacheQuery(cnx, retainConnection);
5455
}
55-
return c.future;
5656
}
5757

5858
/**
5959
* Returns true if there was already a cached query which has been used.
6060
*/
61-
bool _useCachedQuery(_Connection cnx, Completer c) {
61+
_PreparedQuery _useCachedQuery(_Connection cnx) {
6262
var preparedQuery = cnx.getPreparedQueryFromCache(sql);
6363
if (preparedQuery == null) {
64-
return false;
64+
return null;
6565
}
6666

6767
_log.fine("Got prepared query from cache in cnx#${cnx.number} for: $sql");
68-
c.complete(preparedQuery);
69-
return true;
68+
return preparedQuery;
7069
}
7170

72-
_prepareAndCacheQuery(_Connection cnx, Completer c, retainConnection) async {
71+
_prepareAndCacheQuery(_Connection cnx, retainConnection) async {
7372
_log.fine("Preparing new query in cnx#${cnx.number} for: $sql");
7473
var handler = new _PrepareHandler(sql);
7574
cnx.use();
@@ -79,9 +78,9 @@ class Query extends Object with _ConnectionHelpers {
7978
_log.fine("Prepared new query in cnx#${cnx.number} for: $sql");
8079
preparedQuery.cnx = cnx;
8180
cnx.putPreparedQueryInCache(sql, preparedQuery);
82-
c.complete(preparedQuery);
81+
return preparedQuery;
8382
} catch (e) {
84-
_releaseReuseCompleteError(cnx, c, e);
83+
_releaseReuseThrow(cnx, e);
8584
}
8685
}
8786

@@ -108,14 +107,13 @@ class Query extends Object with _ConnectionHelpers {
108107
var c = new Completer<Results>();
109108
var handler = new _ExecuteQueryHandler(preparedQuery, _executed, values);
110109
preparedQuery.cnx.autoRelease = !retainConnection;
111-
Results results = await preparedQuery.cnx.processHandler(handler);
112110
try {
111+
Results results = await preparedQuery.cnx.processHandler(handler);
113112
_log.finest("Prepared query got results");
114-
c.complete(results);
113+
return results;
115114
} catch (e) {
116-
_releaseReuseCompleteError(preparedQuery.cnx, c, e);
115+
_releaseReuseThrow(preparedQuery.cnx, e);
117116
}
118-
return c.future;
119117
}
120118

121119
/**
@@ -132,24 +130,18 @@ class Query extends Object with _ConnectionHelpers {
132130
_log.fine("Prepared query for multi execution. Number of values: ${parameters.length}");
133131
var resultList = new List<Results>();
134132

135-
executeQuery(int i) async {
133+
for (int i = 0; i < parameters.length; i++) {
136134
try {
137135
_log.fine("Executing query, loop $i");
138136
Results results = await _execute(preparedQuery, parameters[i], retainConnection: true);
139137
_log.fine("Got results, loop $i");
140138
Results deStreamedResults = await _ResultsImpl.destream(results);
141139
resultList.add(deStreamedResults);
142-
if (i < parameters.length - 1) {
143-
await executeQuery(i + 1);
144-
} else {
145-
preparedQuery.cnx.release();
146-
}
147140
} catch (e) {
148-
_releaseReuseCompleteError(preparedQuery.cnx, c, e);
141+
_releaseReuseThrow(preparedQuery.cnx, e);
149142
}
150143
}
151-
152-
await executeQuery(0);
144+
preparedQuery.cnx.release();
153145
return resultList;
154146
}
155147

0 commit comments

Comments
 (0)