Skip to main content

tano_database/actor/
cmd.rs

1use 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}