import "package:photos/db/ml/db.dart"; import "package:photos/db/ml/db_fields.dart"; import "package:photos/services/filedata/model/file_data.dart"; extension FileDataTable on MLDataDB { Future putFDStatus(List fdStatusList) async { if (fdStatusList.isEmpty) return; final db = await MLDataDB.instance.asyncDB; final inputs = >[]; for (var status in fdStatusList) { inputs.add( [ status.fileID, status.userID, status.type, status.size, status.objectID, status.objectNonce, status.updatedAt, ], ); } await db.executeBatch( 'INSERT OR REPLACE INTO $fileDataTable ($fileIDColumn, user_id, type, size, obj_id, obj_nonce, updated_at ) values(?, ?, ?, ?, ?, ?, ?)', inputs, ); } Future> getFileIDsVidPreview() async { final db = await MLDataDB.instance.asyncDB; final res = await db.execute( "SELECT $fileIDColumn, $objectIdColumn, size FROM $fileDataTable WHERE type='vid_preview'", ); return res.asMap().map( (i, e) => MapEntry( e[fileIDColumn] as int, PreviewInfo( objectId: e[objectIdColumn] as String, objectSize: e['size'] as int, ), ), ); } Future> getFileIDsWithFDData() async { final db = await MLDataDB.instance.asyncDB; final res = await db.execute('SELECT $fileIDColumn FROM $fileDataTable'); return res.map((e) => e[fileIDColumn] as int).toSet(); } }