tano-database 0.1.1

Tano database
Documentation
use color_eyre::eyre::Result;
use tano_providers::local::parse_song::ParsedSong;
use tokio::sync::oneshot;

use crate::{
    album::Album,
    artist::Artist,
    local_song::{LocalSong, SyncLocalSong},
    song::Song,
};

pub enum DatabaseCmd {
    LoadDatabase {
        respond_to: oneshot::Sender<Result<()>>,
    },
    GetSongs {
        respond_to: oneshot::Sender<Result<Vec<Song>>>,
    },
    GetAlbums {
        respond_to: oneshot::Sender<Result<Vec<Album>>>,
    },
    GetAlbumArtists {
        album_id: i64,
        respond_to: oneshot::Sender<Result<Vec<Artist>>>,
    },
    GetAlbum {
        id: i64,
        respond_to: oneshot::Sender<Result<Option<Album>>>,
    },
    GetAlbumSongs {
        album_id: i64,
        respond_to: oneshot::Sender<Result<Vec<Song>>>,
    },
    GetArtists {
        respond_to: oneshot::Sender<Result<Vec<Artist>>>,
    },
    GetSongIds {
        respond_to: oneshot::Sender<Result<Vec<i64>>>,
    },
    GetSyncLocalSong {
        provider_id: u64,
        respond_to: oneshot::Sender<Result<Vec<SyncLocalSong>>>,
    },
    SyncLocalSongs {
        provider_id: u64,
        new_songs: Vec<ParsedSong>,
        updated_songs: Vec<(i64, ParsedSong)>,
        to_update_path: Vec<(i64, String)>,
        to_delete_ids: Vec<i64>,
        respond_to: oneshot::Sender<Result<()>>,
    },
    GetLocalSongByPath {
        provider_id: u64,
        path: String,
        respond_to: oneshot::Sender<Result<Option<LocalSong>>>,
    },
    GetLocalSongByInode {
        provider_id: u64,
        inode: i64,
        respond_to: oneshot::Sender<Result<Option<LocalSong>>>,
    },
    UpdateLocalSongPath {
        id: i64,
        path: String,
        respond_to: oneshot::Sender<Result<()>>,
    },
    InsertLocalSong {
        provider_id: u64,
        parsed_song: ParsedSong,
        respond_to: oneshot::Sender<Result<i64>>,
    },
    UpdateLocalSong {
        provider_id: u64,
        id: i64,
        parsed_song: ParsedSong,
        respond_to: oneshot::Sender<Result<()>>,
    },
    DeleteLocalSong {
        id: i64,
        respond_to: oneshot::Sender<Result<()>>,
    },
}