mirror of
https://github.com/markuryy/shark.git
synced 2025-12-12 11:41:02 +00:00
feat(spotify): library caching
This commit is contained in:
@@ -299,6 +299,74 @@ pub fn run() {
|
||||
kind: MigrationKind::Up,
|
||||
}];
|
||||
|
||||
let spotify_migrations = vec![Migration {
|
||||
version: 1,
|
||||
description: "create_spotify_cache_tables",
|
||||
sql: "
|
||||
CREATE TABLE IF NOT EXISTS spotify_playlists (
|
||||
id TEXT PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
track_count INTEGER DEFAULT 0,
|
||||
owner_name TEXT,
|
||||
image_url TEXT,
|
||||
cached_at INTEGER NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS spotify_albums (
|
||||
id TEXT PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
artist_name TEXT NOT NULL,
|
||||
track_count INTEGER DEFAULT 0,
|
||||
release_date TEXT,
|
||||
image_url TEXT,
|
||||
cached_at INTEGER NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS spotify_artists (
|
||||
id TEXT PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
followers INTEGER DEFAULT 0,
|
||||
image_url TEXT,
|
||||
cached_at INTEGER NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS spotify_tracks (
|
||||
id TEXT PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
artist_name TEXT NOT NULL,
|
||||
album_name TEXT,
|
||||
duration_ms INTEGER DEFAULT 0,
|
||||
isrc TEXT,
|
||||
album_image_url TEXT,
|
||||
cached_at INTEGER NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS spotify_playlist_tracks (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
playlist_id TEXT NOT NULL,
|
||||
track_id TEXT NOT NULL,
|
||||
name TEXT NOT NULL,
|
||||
artist_name TEXT NOT NULL,
|
||||
album_name TEXT,
|
||||
duration_ms INTEGER DEFAULT 0,
|
||||
track_number INTEGER,
|
||||
isrc TEXT,
|
||||
cached_at INTEGER NOT NULL,
|
||||
UNIQUE(playlist_id, track_id)
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_spotify_playlists_name ON spotify_playlists(name);
|
||||
CREATE INDEX IF NOT EXISTS idx_spotify_albums_artist ON spotify_albums(artist_name);
|
||||
CREATE INDEX IF NOT EXISTS idx_spotify_artists_name ON spotify_artists(name);
|
||||
CREATE INDEX IF NOT EXISTS idx_spotify_tracks_name ON spotify_tracks(name);
|
||||
CREATE INDEX IF NOT EXISTS idx_spotify_tracks_isrc ON spotify_tracks(isrc);
|
||||
CREATE INDEX IF NOT EXISTS idx_spotify_playlist_tracks_playlist ON spotify_playlist_tracks(playlist_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_spotify_playlist_tracks_track ON spotify_playlist_tracks(track_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_spotify_playlist_tracks_isrc ON spotify_playlist_tracks(isrc);
|
||||
",
|
||||
kind: MigrationKind::Up,
|
||||
}];
|
||||
|
||||
tauri::Builder::default()
|
||||
.plugin(tauri_plugin_oauth::init())
|
||||
.plugin(tauri_plugin_os::init())
|
||||
@@ -307,6 +375,7 @@ pub fn run() {
|
||||
tauri_plugin_sql::Builder::new()
|
||||
.add_migrations("sqlite:library.db", library_migrations)
|
||||
.add_migrations("sqlite:deezer.db", deezer_migrations)
|
||||
.add_migrations("sqlite:spotify.db", spotify_migrations)
|
||||
.build(),
|
||||
)
|
||||
.plugin(tauri_plugin_http::init())
|
||||
|
||||
Reference in New Issue
Block a user