rusqlite 0.40 removed ToSql/FromSql for u64 (SQLite integers are i64): every u64 column now reads/writes through an explicit i64 cast. It also rejects a multi-statement execute() instead of silently running only the first statement — which is what catalog.rs's editions/logical_albums prune had been doing all along; it is an execute_batch now, so the logical_albums prune finally runs. cc
51 lines
1.9 KiB
TOML
51 lines
1.9 KiB
TOML
[package]
|
|
name = "qbz-offline-cache"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
description = "Offline cache for QBZ: download-for-offline store, CMAF bundle vault, SQLite index, cached playback resolution (frontend-agnostic)"
|
|
|
|
[dependencies]
|
|
# Sibling crates: the network + crypto + init-parse + library index already live here.
|
|
qbz-models = { path = "../qbz-models" }
|
|
qbz-qobuz = { path = "../qbz-qobuz" }
|
|
qbz-cmaf = { path = "../qbz-cmaf" }
|
|
qbz-secrets = { path = "../qbz-secrets" }
|
|
qbz-library = { path = "../qbz-library" }
|
|
|
|
# SQLite index (match qbz-library's version/features)
|
|
rusqlite = { version = "0.40", features = ["bundled"] }
|
|
|
|
# Async runtime + HTTP (download pipeline + artwork)
|
|
tokio = { workspace = true }
|
|
reqwest = { workspace = true }
|
|
futures-util = { workspace = true }
|
|
|
|
# FLAC tag + artwork embedding (legacy-format post-processing)
|
|
lofty.workspace = true
|
|
|
|
# Platform cache dir (default offline-root location)
|
|
dirs = "6"
|
|
|
|
# DTO serialization (camelCase envelopes shared with the frontend)
|
|
serde = { workspace = true }
|
|
serde_json = { workspace = true }
|
|
|
|
# Logging
|
|
log = { workspace = true }
|
|
|
|
[dev-dependencies]
|
|
tempfile = "3"
|
|
# The purchase download harness (`tests/purchase_download_harness.rs`) stands up
|
|
# a real local HTTP server and drives the pipeline with real bytes. Integration
|
|
# tests do not inherit `[dependencies]`, so the crates it names are repeated here.
|
|
tokio = { workspace = true }
|
|
lofty.workspace = true
|
|
qbz-models = { path = "../qbz-models" }
|
|
qbz-library = { path = "../qbz-library" }
|
|
# reqwest is built with `rustls-tls-webpki-roots-no-provider`, so building ANY
|
|
# client panics with "No provider set" until a process-level CryptoProvider is
|
|
# installed. The app does that at startup (`qbz_app::ensure_crypto_provider`);
|
|
# a test binary has no startup, so the harness installs it itself.
|
|
rustls = { version = "0.23", features = ["aws_lc_rs"] }
|