// lib/model/db/db.dart import 'package:aves/model/covers.dart'; //import 'package:aves/model/dynamic_albums.dart'; import 'package:aves/model/entry/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/vaults/details.dart'; import 'package:aves/model/viewer/video_playback.dart'; import 'folder_stats.dart'; // 👇 serve per tipizzare il getter della connessione SQLite import 'package:sqflite/sqflite.dart' show Database; // 👇 serve per buildLocalFolders() import 'package:aves/model/source/collection_source.dart'; abstract class LocalMediaDb { int get nextId; Future> getLocalFolderPaths(); Future> buildFoldersInMemory(CollectionSource source); Future saveFoldersBatch(List folders); Future get path; Future init(); Future dbFileSize(); Future reset(); Future removeIds(Set ids, {Set? dataTypes}); Future> loadFolders(); // === Espone la connessione SQLite aperta dal loader (per il sync 4A) === Database get rawDb; // ============================================================ // FOLDERS API (LOCAL) — AGGIUNTA // ============================================================ // ============================================================ // ENTRIES // ============================================================ Future clearEntries(); Future> loadEntries({int? origin, String? directory}); Future> loadEntriesById(Set ids); Future insertEntries(Set entries); Future updateEntry(int id, AvesEntry entry); Future> searchLiveEntries(String query, {int? limit}); Future> searchLiveDuplicates(int origin, Set? entries); // ============================================================ // DATE TAKEN // ============================================================ Future clearDates(); Future> loadDates(); // ============================================================ // CATALOG METADATA // ============================================================ Future clearCatalogMetadata(); Future> loadCatalogMetadata(); Future> loadCatalogMetadataById(Set ids); Future saveCatalogMetadata(Set metadataEntries); Future updateCatalogMetadata(int id, CatalogMetadata? metadata); // ============================================================ // ADDRESS // ============================================================ Future clearAddresses(); Future> loadAddresses(); Future> loadAddressesById(Set ids); Future saveAddresses(Set addresses); Future updateAddress(int id, AddressDetails? address); // ============================================================ // VAULTS // ============================================================ Future clearVaults(); Future> loadAllVaults(); Future addVaults(Set rows); Future updateVault(String oldName, VaultDetails row); Future removeVaults(Set rows); // ============================================================ // TRASH // ============================================================ Future clearTrashDetails(); Future> loadAllTrashDetails(); Future updateTrash(int id, TrashDetails? details); // ============================================================ // FAVOURITES // ============================================================ Future clearFavourites(); Future> loadAllFavourites(); Future addFavourites(Set rows); Future updateFavouriteId(int id, FavouriteRow row); Future removeFavourites(Set rows); // ============================================================ // COVERS // ============================================================ Future clearCovers(); Future> loadAllCovers(); Future addCovers(Set 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(Set ids); }