Setting eagerError may cause the transaction to end before all future returns

This commit is contained in:
Ming Ming 2022-07-26 14:11:12 +08:00
parent 2df27502f1
commit 84264dad20

View file

@ -264,8 +264,7 @@ class FileSqliteCacheUpdater {
.map((r) => MapEntry(r.read(db.files.fileId)!, r.read(db.files.rowId)!)) .map((r) => MapEntry(r.read(db.files.fileId)!, r.read(db.files.rowId)!))
.get()); .get());
await Future.wait( await Future.wait(sqlFiles.map((f) async {
sqlFiles.map((f) async {
var rowId = fileRowIdMap[f.file.fileId.value]; var rowId = fileRowIdMap[f.file.fileId.value];
if (rowId != null) { if (rowId != null) {
// shared file that exists in other accounts // shared file that exists in other accounts
@ -275,9 +274,8 @@ class FileSqliteCacheUpdater {
); );
rowId = dbFile.rowId; rowId = dbFile.rowId;
} }
final dbAccountFile = await db final dbAccountFile =
.into(db.accountFiles) await db.into(db.accountFiles).insertReturning(f.accountFile.copyWith(
.insertReturning(f.accountFile.copyWith(
account: sql.Value(dbAccount.rowId), account: sql.Value(dbAccount.rowId),
file: sql.Value(rowId), file: sql.Value(rowId),
)); ));
@ -291,9 +289,7 @@ class FileSqliteCacheUpdater {
.insert(f.trash!.copyWith(file: sql.Value(rowId))); .insert(f.trash!.copyWith(file: sql.Value(rowId)));
} }
_onRowCached(rowId, f, dir); _onRowCached(rowId, f, dir);
}), }));
eagerError: true,
);
} }
void _onRowCached(int rowId, sql.CompleteFileCompanion dbFile, File? dir) { void _onRowCached(int rowId, sql.CompleteFileCompanion dbFile, File? dir) {