Aves_mio0.88/lib/model/db/db.dart
2026-10-03 12:51:15 +02:00

217 lines
6.1 KiB
Dart

// lib/model/db/db.dart
import 'package:aves/model/activity/activity_entry.dart';
import 'package:aves/model/activity/activity_preview_point.dart';
import 'package:aves/model/covers.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';
import 'package:sqflite/sqflite.dart' show Database;
import 'package:aves/model/source/collection_source.dart';
abstract class LocalMediaDb {
int get nextId;
Future<Set<String>> getLocalFolderPaths();
Future<Map<String, FolderStats>> buildFoldersInMemory(
CollectionSource source,
);
Future<void> saveFoldersBatch(List<FolderStats> folders);
Future<String> get path;
Future<void> init();
Future<int> dbFileSize();
Future<void> reset();
Future<void> removeIds(Set<int> ids, {Set<EntryDataType>? dataTypes});
Future<List<FolderStats>> loadFolders({
int? contentType,
int? isRemote,
});
// === Espone la connessione SQLite aperta dal loader (per il sync 4A) ===
Database get rawDb;
// ============================================================
// ENTRIES
// ============================================================
Future<void> clearEntries();
Future<Set<AvesEntry>> loadEntries({int? origin, String? directory});
Future<Set<AvesEntry>> loadEntriesById(Set<int> ids);
Future<void> insertEntries(Set<AvesEntry> entries);
Future<void> updateEntry(int id, AvesEntry entry);
Future<Set<AvesEntry>> searchLiveEntries(String query, {int? limit});
Future<Set<AvesEntry>> searchLiveDuplicates(
int origin,
Set<AvesEntry>? entries,
);
// ============================================================
// DATE TAKEN
// ============================================================
Future<void> clearDates();
Future<Map<int?, int?>> loadDates();
// ============================================================
// CATALOG METADATA
// ============================================================
Future<void> clearCatalogMetadata();
Future<Set<CatalogMetadata>> loadCatalogMetadata();
Future<Set<CatalogMetadata>> loadCatalogMetadataById(Set<int> ids);
Future<void> saveCatalogMetadata(Set<CatalogMetadata> metadataEntries);
Future<void> updateCatalogMetadata(int id, CatalogMetadata? metadata);
// ============================================================
// ADDRESS
// ============================================================
Future<void> clearAddresses();
Future<Set<AddressDetails>> loadAddresses();
Future<Set<AddressDetails>> loadAddressesById(Set<int> ids);
Future<void> saveAddresses(Set<AddressDetails> addresses);
Future<void> updateAddress(int id, AddressDetails? address);
// ============================================================
// VAULTS
// ============================================================
Future<void> clearVaults();
Future<Set<VaultDetails>> loadAllVaults();
Future<void> addVaults(Set<VaultDetails> rows);
Future<void> updateVault(String oldName, VaultDetails row);
Future<void> removeVaults(Set<VaultDetails> rows);
// ============================================================
// TRASH
// ============================================================
Future<void> clearTrashDetails();
Future<Set<TrashDetails>> loadAllTrashDetails();
Future<void> updateTrash(int id, TrashDetails? details);
// ============================================================
// FAVOURITES
// ============================================================
Future<void> clearFavourites();
Future<Set<FavouriteRow>> loadAllFavourites();
Future<void> addFavourites(Set<FavouriteRow> rows);
Future<void> updateFavouriteId(int id, FavouriteRow row);
Future<void> removeFavourites(Set<FavouriteRow> rows);
// ============================================================
// COVERS
// ============================================================
Future<void> clearCovers();
Future<Set<CoverRow>> loadAllCovers();
Future<void> addCovers(Set<CoverRow> rows);
Future<void> updateCoverEntryId(int id, CoverRow row);
Future<void> removeCovers(Set<CollectionFilter> filters);
// ============================================================
// VIDEO PLAYBACK
// ============================================================
Future<void> clearVideoPlayback();
Future<Set<VideoPlaybackRow>> loadAllVideoPlayback();
Future<VideoPlaybackRow?> loadVideoPlayback(int id);
Future<void> addVideoPlayback(Set<VideoPlaybackRow> rows);
Future<void> removeVideoPlayback(Set<int> ids);
// ============================================================
// ACTIVITIES
// ============================================================
Future<void> clearActivities();
Future<Set<ActivityEntry>> loadActivities({
int? origin,
String? directory,
String? format,
String? sport,
int? startAfterMillis,
int? startBeforeMillis,
bool? favourite,
String? query,
int? limit,
});
Future<ActivityEntry?> loadActivity(int id);
Future<ActivityEntry?> loadActivityByUri(String uri);
Future<int> insertActivity(ActivityEntry entry);
Future<void> updateActivity(int id, ActivityEntry entry);
Future<int> upsertActivity(ActivityEntry entry);
Future<void> removeActivities(Set<int> ids);
Future<void> markActivitiesMissingExcept(Set<String> uris);
Future<Set<ActivityEntry>> searchActivities(String query, {int? limit});
Future<void> clearActivityPreviewPoints(int activityId);
Future<void> saveActivityPreviewPoints(
int activityId,
List<ActivityPreviewPoint> points,
);
Future<List<ActivityPreviewPoint>> loadActivityPreviewPoints(int activityId);
Future<Map<int, List<ActivityPreviewPoint>>> loadActivityPreviewPointsByActivityIds(
Set<int> activityIds,
);
}