artifacts: bandcamp: implement synchronization for artists

This commit is contained in:
2026-06-26 10:19:10 +02:00
parent f55865c4e5
commit f4e1adfd4a
+7 -3
View File
@@ -2,7 +2,7 @@ use bandcamp::SearchResultItem;
use schemars::JsonSchema; use schemars::JsonSchema;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use crate::artifacts::{Album, Artifact, ArtifactBuilder, Artist, SourceID, Track, tools::{DataSource, ToolDescription}}; use crate::artifacts::{Album, Artifact, ArtifactBuilder, Artist, Contents, SourceID, Track, tools::{DataSource, ToolDescription}};
#[derive(Debug, Serialize, Deserialize, Clone, JsonSchema)] #[derive(Debug, Serialize, Deserialize, Clone, JsonSchema)]
pub struct BandcampQueryArgs { pub struct BandcampQueryArgs {
@@ -34,8 +34,12 @@ impl DataSource for BandcampSource {
type Args = BandcampQueryArgs; type Args = BandcampQueryArgs;
type Error = bandcamp::Error; type Error = bandcamp::Error;
async fn synchronize(&self, _artifact: &mut Artifact) -> Result<Vec<Artifact>, Self::Error> { async fn synchronize(&self, artifact: &mut Artifact) -> Result<Vec<Artifact>, Self::Error> {
todo!() if let Contents::Artist(artist) = &artifact.contents {
Ok(self.query(&BandcampQueryArgs { query: artist.name.clone() }).await.unwrap_or_default())
} else {
Ok(vec![])
}
} }
async fn query(&self, args: &Self::Args) -> Result<Vec<Artifact>, Self::Error> { async fn query(&self, args: &Self::Args) -> Result<Vec<Artifact>, Self::Error> {