librmo 0.4.4

A library to manage media files and play them
Documentation
use crate::app::settings::get_db_connection;
use crate::entity::track::{Entity as TrackEntity, Model as TrackModel};
use crate::entity::{media, music, track};
use crate::error::CustomError;
use sea_orm::{ColumnTrait, EntityTrait, QueryFilter};

pub async fn get_tracks() -> Result<Vec<TrackModel>, CustomError> {
    let db = get_db_connection().await?;
    let tracks = TrackEntity::find()
        .all(&db)
        .await
        .expect("Failed to find all");
    //info!("finished  get_media");
    Ok(tracks)
}

pub async fn get_track_path_from_id(id: i32) -> Result<String, CustomError> {
    let db = get_db_connection().await?;
    let track = track::Entity::find_by_id(id)
        .one(&db)
        .await
        .expect("Failed to find track record")
        .unwrap();
    Ok(get_path_from_track(track).await.unwrap())
}

pub async fn get_path_from_track(t: TrackModel) -> Result<String, CustomError> {
    let db = get_db_connection().await?;
    let music = music::Entity::find()
        .filter(music::Column::Id.eq(t.music_id))
        .to_owned()
        .one(&db)
        .await
        .expect("Failed to find all");
    let media = media::Entity::find()
        .filter(media::Column::Id.eq(music.unwrap().media_id))
        .to_owned()
        .one(&db)
        .await
        .expect("Failed to find all");
    //info!("finished  get_tracks_by_release_id");
    Ok(media.unwrap().path)
}

pub async fn get_tracks_by_release_id(release_id: String) -> Result<Vec<TrackModel>, CustomError> {
    let db = get_db_connection().await?;
    let tracks = TrackEntity::find()
        .filter(track::Column::MbReleaseId.eq(release_id))
        .to_owned()
        .all(&db)
        .await
        .expect("Failed to find all");
    //info!("finished  get_tracks_by_release_id");
    Ok(tracks)
}