feat(dz): add local caching and UI for user favorites

This commit is contained in:
2025-10-02 12:17:04 -04:00
parent 0d7361db4b
commit d8456ce912
5 changed files with 864 additions and 226 deletions

View File

@@ -26,7 +26,7 @@ fn tag_audio_file(
#[cfg_attr(mobile, tauri::mobile_entry_point)]
pub fn run() {
let migrations = vec![
let library_migrations = vec![
Migration {
version: 1,
description: "create_library_tables",
@@ -65,10 +65,64 @@ pub fn run() {
}
];
let deezer_migrations = vec![
Migration {
version: 1,
description: "create_deezer_cache_tables",
sql: "
CREATE TABLE IF NOT EXISTS deezer_playlists (
id TEXT PRIMARY KEY,
title TEXT NOT NULL,
nb_tracks INTEGER DEFAULT 0,
creator_name TEXT,
picture_small TEXT,
picture_medium TEXT,
cached_at INTEGER NOT NULL
);
CREATE TABLE IF NOT EXISTS deezer_albums (
id TEXT PRIMARY KEY,
title TEXT NOT NULL,
artist_name TEXT NOT NULL,
nb_tracks INTEGER DEFAULT 0,
release_date TEXT,
picture_small TEXT,
picture_medium TEXT,
cached_at INTEGER NOT NULL
);
CREATE TABLE IF NOT EXISTS deezer_artists (
id TEXT PRIMARY KEY,
name TEXT NOT NULL,
nb_album INTEGER DEFAULT 0,
picture_small TEXT,
picture_medium TEXT,
cached_at INTEGER NOT NULL
);
CREATE TABLE IF NOT EXISTS deezer_tracks (
id TEXT PRIMARY KEY,
title TEXT NOT NULL,
artist_name TEXT NOT NULL,
album_title TEXT,
duration INTEGER DEFAULT 0,
cached_at INTEGER NOT NULL
);
CREATE INDEX IF NOT EXISTS idx_deezer_playlists_title ON deezer_playlists(title);
CREATE INDEX IF NOT EXISTS idx_deezer_albums_artist ON deezer_albums(artist_name);
CREATE INDEX IF NOT EXISTS idx_deezer_artists_name ON deezer_artists(name);
CREATE INDEX IF NOT EXISTS idx_deezer_tracks_title ON deezer_tracks(title);
",
kind: MigrationKind::Up,
}
];
tauri::Builder::default()
.plugin(
tauri_plugin_sql::Builder::new()
.add_migrations("sqlite:library.db", migrations)
.add_migrations("sqlite:library.db", library_migrations)
.add_migrations("sqlite:deezer.db", deezer_migrations)
.build()
)
.plugin(tauri_plugin_http::init())