import 'package:aves/model/covers.dart'; import 'package:aves/model/entry.dart'; import 'package:aves/model/favourites.dart'; import 'package:aves/model/filters/filters.dart'; import 'package:aves/model/metadata/address.dart'; import 'package:aves/model/metadata/catalog.dart'; import 'package:aves/model/metadata/trash.dart'; import 'package:aves/model/video_playback.dart'; abstract class MetadataDb { int get nextId; Future init(); Future dbFileSize(); Future reset(); Future removeIds(Iterable ids, {Set? dataTypes}); // entries Future clearEntries(); Future> loadEntries({String? directory}); Future> loadEntriesById(Iterable ids); Future saveEntries(Iterable entries); Future updateEntry(int id, AvesEntry entry); Future> searchLiveEntries(String query, {int? limit}); // date taken Future clearDates(); Future> loadDates(); // catalog metadata Future clearCatalogMetadata(); Future> loadCatalogMetadata(); Future> loadCatalogMetadataById(Iterable ids); Future saveCatalogMetadata(Set metadataEntries); Future updateCatalogMetadata(int id, CatalogMetadata? metadata); // address Future clearAddresses(); Future> loadAddresses(); Future> loadAddressesById(Iterable ids); Future saveAddresses(Set addresses); Future updateAddress(int id, AddressDetails? address); // trash Future clearTrashDetails(); Future> loadAllTrashDetails(); Future updateTrash(int id, TrashDetails? details); // favourites Future clearFavourites(); Future> loadAllFavourites(); Future addFavourites(Iterable rows); Future updateFavouriteId(int id, FavouriteRow row); Future removeFavourites(Iterable rows); // covers Future clearCovers(); Future> loadAllCovers(); Future addCovers(Iterable rows); Future updateCoverEntryId(int id, CoverRow row); Future removeCovers(Set filters); // video playback Future clearVideoPlayback(); Future> loadAllVideoPlayback(); Future loadVideoPlayback(int? id); Future addVideoPlayback(Set rows); Future removeVideoPlayback(Iterable ids); }