T4: 1:1 port of the artist_vectors vector builder into qbz-reco. Keeps Tauri's Arc<Mutex>/RwLock ownership of the store + MusicBrainz client/cache + Qobuz client (NOT the plan's by-ref pattern): MusicBrainzCache holds a !Sync rusqlite Connection, so a borrowed &cache held across the MB-API await would make the spawned suggestions future !Send. The interleaved short-lived locking (drop the guard before each await) is the faithful + Send-safe shape. Swaps only crate::api::QobuzClient -> qbz_qobuz::QobuzClient (get_similar_artists -> SearchResultsPage<Artist>); the MusicBrainz types already live in qbz_integrations so extract_relationships ports verbatim. Drops the dead resolve_qobuz_to_mbid (D3). 21 qbz-reco tests green. cc
15 lines
467 B
TOML
15 lines
467 B
TOML
[package]
|
|
name = "qbz-reco"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
description = "Frontend-agnostic artist-vector recommendation engine for QBZ (ported from the Tauri artist_vectors)"
|
|
|
|
[dependencies]
|
|
serde = { workspace = true }
|
|
rusqlite = { version = "0.31", features = ["bundled"] }
|
|
log = { workspace = true }
|
|
tokio = { workspace = true }
|
|
qbz-qobuz = { path = "../qbz-qobuz" }
|
|
qbz-integrations = { path = "../qbz-integrations" }
|