New crate crates/qbz-mixtape holding the Mixtapes+Collections backend, ported 1:1 from src-tauri/src/mixtape and re-typed against the real shared crates so it runs headless (no tauri::State, no #[tauri::command] wrappers) per ADR-005/006: - schema.rs / repo.rs / shuffle.rs copied verbatim (SQLite schema + migrations, CRUD repository, DJ-mix similarity sampler). enqueue.rs re-typed to qbz_qobuz::QobuzClient, qbz_library::LibraryDatabase and qbz_plex, dropping the src-tauri crate::api / crate::library shims. - ItemResolver is frontend-agnostic: ProdItemResolver takes a caller-supplied sync local-resolution closure so &LibraryDatabase (!Sync) never crosses an .await. resolve_local_item centralizes the full Local dispatch matrix (Album / Track i64-parse / Playlist-unsupported) so frontends cannot drift. - src-tauri left untouched: Tauri is removed at the end of the Slint port, so the temporary duplication is intentional and zero-risk to the working Tauri build. Adds qbz-mixtape to the workspace members + rand/strsim workspace deps. Phase-2 Slice 1 of the MyQBZ Slint port. 57 crate tests pass. cc
36 lines
924 B
TOML
36 lines
924 B
TOML
[package]
|
|
name = "qbz-mixtape"
|
|
version = "0.1.0"
|
|
edition = "2021"
|
|
description = "Mixtapes & Collections backend for QBZ — schema, repo, shuffle, enqueue (headless, frontend-agnostic)"
|
|
authors = ["blitzkriegfc"]
|
|
|
|
[dependencies]
|
|
# Shared QBZ crates (the real models + resolvers, not src-tauri shims)
|
|
qbz-models = { path = "../qbz-models" }
|
|
qbz-qobuz = { path = "../qbz-qobuz" }
|
|
qbz-library = { path = "../qbz-library" }
|
|
qbz-plex = { path = "../qbz-plex" }
|
|
|
|
# Database
|
|
rusqlite = { version = "0.31", features = ["bundled"] }
|
|
|
|
# UUID generation
|
|
uuid = { version = "1", features = ["v4"] }
|
|
|
|
# Shuffle / DJ-mix
|
|
rand = { workspace = true }
|
|
strsim = { workspace = true }
|
|
|
|
# Async resolver trait
|
|
async-trait = { workspace = true }
|
|
|
|
# Logging
|
|
log = { workspace = true }
|
|
|
|
# Serialization (models derive serde)
|
|
serde = { workspace = true }
|
|
|
|
[dev-dependencies]
|
|
tokio = { version = "1", features = ["macros", "rt", "rt-multi-thread"] }
|