A decentralized music tracking and discovery platform built on AT Protocol 🎵

fix: add get_album_by_uri and get_artist_by_uri functions for fetching albums and artists by URI

+35 -3
+14
crates/scrobbler/src/repo/album.rs
··· 17 18 Ok(results[0].clone()) 19 }
··· 17 18 Ok(results[0].clone()) 19 } 20 + 21 + pub async fn get_album_by_uri(pool: &Pool<Postgres>, uri: &str) -> Result<Album, Error> { 22 + let results: Vec<Album> = sqlx::query_as( 23 + r#" 24 + SELECT * FROM albums 25 + WHERE albums.uri = $1 26 + "#, 27 + ) 28 + .bind(uri) 29 + .fetch_all(pool) 30 + .await?; 31 + 32 + Ok(results[0].clone()) 33 + }
+14
crates/scrobbler/src/repo/artist.rs
··· 20 21 Ok(results[0].clone()) 22 }
··· 20 21 Ok(results[0].clone()) 22 } 23 + 24 + pub async fn get_artist_by_uri(pool: &Pool<Postgres>, uri: &str) -> Result<Artist, Error> { 25 + let results: Vec<Artist> = sqlx::query_as( 26 + r#" 27 + SELECT * FROM artists 28 + WHERE artists.uri = $1 29 + "#, 30 + ) 31 + .bind(uri) 32 + .fetch_all(pool) 33 + .await?; 34 + 35 + Ok(results[0].clone()) 36 + }
+7 -3
crates/scrobbler/src/scrobbler.rs
··· 12 musicbrainz::{ 13 client::MusicbrainzClient, get_best_release_from_recordings, recording::Recording, 14 }, 15 - repo::{self, album}, 16 rocksky, 17 spotify::{client::SpotifyClient, refresh_token}, 18 types::{Scrobble, Track}, ··· 579 if let Some(track) = result { 580 tracing::info!(id = %track.xata_id, artist = %track.artist, album = %track.album, album_atist = %track.album_artist, album_uri = ?track.album_uri, artist_uri = ?track.artist_uri, "Xata (track)"); 581 scrobble.album = Some(track.album.clone()); 582 - let album = repo::album::get_album_by_track_id(pool, &track.xata_id).await?; 583 - let artist = repo::artist::get_artist_by_track_id(pool, &track.xata_id).await?; 584 let mut track: Track = track.into(); 585 track.year = match album.year { 586 Some(year) => Some(year as u32),
··· 12 musicbrainz::{ 13 client::MusicbrainzClient, get_best_release_from_recordings, recording::Recording, 14 }, 15 + repo::{self}, 16 rocksky, 17 spotify::{client::SpotifyClient, refresh_token}, 18 types::{Scrobble, Track}, ··· 579 if let Some(track) = result { 580 tracing::info!(id = %track.xata_id, artist = %track.artist, album = %track.album, album_atist = %track.album_artist, album_uri = ?track.album_uri, artist_uri = ?track.artist_uri, "Xata (track)"); 581 scrobble.album = Some(track.album.clone()); 582 + let album = 583 + repo::album::get_album_by_uri(pool, &track.album_uri.clone().unwrap_or_default()) 584 + .await?; 585 + let artist = 586 + repo::artist::get_artist_by_uri(pool, &track.artist_uri.clone().unwrap_or_default()) 587 + .await?; 588 let mut track: Track = track.into(); 589 track.year = match album.year { 590 Some(year) => Some(year as u32),