Files
qbz/crates/qbz-mixtape/Cargo.toml
T
vicrodh 5458f3aa74 feat(mixtape): extract shared qbz-mixtape crate (MyQBZ backend, headless)
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
2026-06-09 02:16:20 -06:00

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"] }