Genre album/artists endpoints
This commit is contained in:
parent
8d51344dc3
commit
143da76673
2 changed files with 32 additions and 4 deletions
|
@ -61,6 +61,8 @@ pub fn router() -> Router<App> {
|
|||
.route("/artists/:artists/albums/:name", get(get_album))
|
||||
.route("/genres", get(get_genres))
|
||||
.route("/genres/:genre", get(get_genre))
|
||||
.route("/genres/:genre/albums", get(get_genre_albums))
|
||||
.route("/genres/:genre/artists", get(get_genre_artists))
|
||||
.route("/genres/:genre/songs", get(get_genre_songs))
|
||||
.route("/random", get(get_random_albums)) // Deprecated
|
||||
.route("/recent", get(get_recent_albums)) // Deprecated
|
||||
|
@ -533,6 +535,36 @@ async fn get_genre(
|
|||
Ok(Json(index_manager.get_genre(genre).await?.into()))
|
||||
}
|
||||
|
||||
async fn get_genre_albums(
|
||||
_auth: Auth,
|
||||
State(index_manager): State<index::Manager>,
|
||||
Path(genre): Path<String>,
|
||||
) -> Result<Json<Vec<dto::AlbumHeader>>, APIError> {
|
||||
let albums = index_manager
|
||||
.get_genre(genre)
|
||||
.await?
|
||||
.albums
|
||||
.into_iter()
|
||||
.map(|a| a.into())
|
||||
.collect();
|
||||
Ok(Json(albums))
|
||||
}
|
||||
|
||||
async fn get_genre_artists(
|
||||
_auth: Auth,
|
||||
State(index_manager): State<index::Manager>,
|
||||
Path(genre): Path<String>,
|
||||
) -> Result<Json<Vec<dto::ArtistHeader>>, APIError> {
|
||||
let artists = index_manager
|
||||
.get_genre(genre)
|
||||
.await?
|
||||
.artists
|
||||
.into_iter()
|
||||
.map(|a| a.into())
|
||||
.collect();
|
||||
Ok(Json(artists))
|
||||
}
|
||||
|
||||
async fn get_genre_songs(
|
||||
_auth: Auth,
|
||||
State(index_manager): State<index::Manager>,
|
||||
|
|
|
@ -334,16 +334,12 @@ impl From<index::GenreHeader> for GenreHeader {
|
|||
pub struct Genre {
|
||||
#[serde(flatten)]
|
||||
pub header: GenreHeader,
|
||||
pub albums: Vec<AlbumHeader>,
|
||||
pub artists: Vec<ArtistHeader>,
|
||||
}
|
||||
|
||||
impl From<index::Genre> for Genre {
|
||||
fn from(genre: index::Genre) -> Self {
|
||||
Self {
|
||||
header: GenreHeader::from(genre.header),
|
||||
albums: genre.albums.into_iter().map(|a| a.into()).collect(),
|
||||
artists: genre.artists.into_iter().map(|a| a.into()).collect(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue