Files
PinePods-nix/PinePods-0.8.2/mobile/lib/repository/repository.dart
2026-03-03 10:57:43 -05:00

71 lines
2.0 KiB
Dart

// Copyright 2020 Ben Hills and the project contributors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'package:pinepods_mobile/entities/episode.dart';
import 'package:pinepods_mobile/entities/podcast.dart';
import 'package:pinepods_mobile/entities/transcript.dart';
import 'package:pinepods_mobile/state/episode_state.dart';
/// An abstract class that represent the actions supported by the chosen
/// database or storage implementation.
abstract class Repository {
/// General
Future<void> close();
/// Podcasts
Future<Podcast?> findPodcastById(num id);
Future<Podcast?> findPodcastByGuid(String guid);
Future<Podcast> savePodcast(Podcast podcast, {bool withEpisodes = true});
Future<void> deletePodcast(Podcast podcast);
Future<List<Podcast>> subscriptions();
/// Episodes
Future<List<Episode>> findAllEpisodes();
Future<Episode?> findEpisodeById(int id);
Future<Episode?> findEpisodeByGuid(String guid);
Future<List<Episode?>> findEpisodesByPodcastGuid(
String pguid, {
PodcastEpisodeFilter filter = PodcastEpisodeFilter.none,
PodcastEpisodeSort sort = PodcastEpisodeSort.none,
});
Future<Episode?> findEpisodeByTaskId(String taskId);
Future<Episode> saveEpisode(Episode episode, [bool updateIfSame = false]);
Future<List<Episode>> saveEpisodes(List<Episode> episodes, [bool updateIfSame = false]);
Future<void> deleteEpisode(Episode episode);
Future<void> deleteEpisodes(List<Episode> episodes);
Future<List<Episode>> findDownloadsByPodcastGuid(String pguid);
Future<List<Episode>> findDownloads();
Future<Transcript?> findTranscriptById(int id);
Future<Transcript> saveTranscript(Transcript transcript);
Future<void> deleteTranscriptById(int id);
Future<void> deleteTranscriptsById(List<int> id);
/// Queue
Future<void> saveQueue(List<Episode> episodes);
Future<List<Episode>> loadQueue();
/// Event listeners
Stream<Podcast>? podcastListener;
Stream<EpisodeState>? episodeListener;
}