fix(mobile): ocr delete by asset (#32611)
(cherry picked from commit 56ed326acda2220fc7e3b21b17b3c8d24daf99cc)
This commit is contained in:
@@ -923,7 +923,7 @@ class SyncStreamRepository extends DatabaseAccessor<Drift> with $SyncStreamRepos
|
||||
try {
|
||||
await _db.batch((batch) {
|
||||
for (final assetOcr in data) {
|
||||
batch.deleteWhere(_db.assetOcrEntity, (row) => row.id.equals(assetOcr.id));
|
||||
batch.deleteWhere(_db.assetOcrEntity, (row) => row.assetId.equals(assetOcr.assetId));
|
||||
}
|
||||
});
|
||||
} catch (error, stack) {
|
||||
|
||||
@@ -363,4 +363,65 @@ void main() {
|
||||
expect(rows.map((r) => r.id).toSet(), {last.id, lastLib.id});
|
||||
});
|
||||
});
|
||||
|
||||
group('SyncStreamRepository - deleteAssetOcrV1 (#32337)', () {
|
||||
test('removes OCR rows for deleted assets', () async {
|
||||
await sut.updateUsersV1([_createUser()]);
|
||||
final known1 = _createAsset(
|
||||
id: 'known1',
|
||||
checksum: 'AAA',
|
||||
fileName: 'a.jpg',
|
||||
);
|
||||
final known2 = _createAsset(
|
||||
id: 'known2',
|
||||
checksum: 'BBB',
|
||||
fileName: 'b.jpg',
|
||||
);
|
||||
await sut.updateAssetsV1([known1, known2]);
|
||||
|
||||
await sut.updateAssetOcrV1([
|
||||
SyncAssetOcrV1(
|
||||
assetId: known1.id,
|
||||
boxScore: 0.9,
|
||||
id: 'ocr-1',
|
||||
isVisible: true,
|
||||
text: 'this text',
|
||||
textScore: 0.9,
|
||||
x1: 1,
|
||||
x2: 2,
|
||||
x3: 3,
|
||||
x4: 4,
|
||||
y1: 1,
|
||||
y2: 2,
|
||||
y3: 3,
|
||||
y4: 4,
|
||||
),
|
||||
SyncAssetOcrV1(
|
||||
assetId: known2.id,
|
||||
boxScore: 0.8,
|
||||
id: 'ocr-2',
|
||||
isVisible: false,
|
||||
text: 'this text again',
|
||||
textScore: 0.8,
|
||||
x1: 1,
|
||||
x2: 2,
|
||||
x3: 3,
|
||||
x4: 4,
|
||||
y1: 1,
|
||||
y2: 2,
|
||||
y3: 3,
|
||||
y4: 4,
|
||||
),
|
||||
]);
|
||||
|
||||
await sut.deleteAssetOcrV1([
|
||||
SyncAssetOcrDeleteV1(id: 'log-id', assetId: known1.id, deletedAt: DateTime(2024, 1, 5)),
|
||||
]);
|
||||
|
||||
final removedRows = await (db.assetOcrEntity.select()..where((t) => t.assetId.equals(known1.id))).get();
|
||||
expect(removedRows, isEmpty);
|
||||
final keepRows = await (db.assetOcrEntity.select()..where((t) => t.assetId.equals(known2.id))).get();
|
||||
expect(keepRows, hasLength(1));
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user