tano_database/actor/
cmd.rs1use color_eyre::eyre::Result;
2use tano_providers::local::parse_song::ParsedSong;
3use tokio::sync::oneshot;
4
5use crate::{
6 album::Album,
7 artist::Artist,
8 local_song::{LocalSong, SyncLocalSong},
9 song::Song,
10};
11
12pub enum DatabaseCmd {
13 LoadDatabase {
14 respond_to: oneshot::Sender<Result<()>>,
15 },
16 GetSongs {
17 respond_to: oneshot::Sender<Result<Vec<Song>>>,
18 },
19 GetAlbums {
20 respond_to: oneshot::Sender<Result<Vec<Album>>>,
21 },
22 GetAlbumArtists {
23 album_id: i64,
24 respond_to: oneshot::Sender<Result<Vec<Artist>>>,
25 },
26 GetAlbum {
27 id: i64,
28 respond_to: oneshot::Sender<Result<Option<Album>>>,
29 },
30 GetAlbumSongs {
31 album_id: i64,
32 respond_to: oneshot::Sender<Result<Vec<Song>>>,
33 },
34 GetArtists {
35 respond_to: oneshot::Sender<Result<Vec<Artist>>>,
36 },
37 GetSongIds {
38 respond_to: oneshot::Sender<Result<Vec<i64>>>,
39 },
40 GetSyncLocalSong {
41 provider_id: u64,
42 respond_to: oneshot::Sender<Result<Vec<SyncLocalSong>>>,
43 },
44 SyncLocalSongs {
45 provider_id: u64,
46 new_songs: Vec<ParsedSong>,
47 updated_songs: Vec<(i64, ParsedSong)>,
48 to_update_path: Vec<(i64, String)>,
49 to_delete_ids: Vec<i64>,
50 respond_to: oneshot::Sender<Result<()>>,
51 },
52 GetLocalSongByPath {
53 provider_id: u64,
54 path: String,
55 respond_to: oneshot::Sender<Result<Option<LocalSong>>>,
56 },
57 GetLocalSongByInode {
58 provider_id: u64,
59 inode: i64,
60 respond_to: oneshot::Sender<Result<Option<LocalSong>>>,
61 },
62 UpdateLocalSongPath {
63 id: i64,
64 path: String,
65 respond_to: oneshot::Sender<Result<()>>,
66 },
67 InsertLocalSong {
68 provider_id: u64,
69 parsed_song: ParsedSong,
70 respond_to: oneshot::Sender<Result<i64>>,
71 },
72 UpdateLocalSong {
73 provider_id: u64,
74 id: i64,
75 parsed_song: ParsedSong,
76 respond_to: oneshot::Sender<Result<()>>,
77 },
78 DeleteLocalSong {
79 id: i64,
80 respond_to: oneshot::Sender<Result<()>>,
81 },
82}