import '../database/db_helper.dart'; import '../models/song.dart'; class FavoritenService { static final FavoritenService _instanz = FavoritenService._(); factory FavoritenService() => _instanz; FavoritenService._(); final DbHelper _db = DbHelper(); int? _favoritenPlaylistId; int? get favoritenId => _favoritenPlaylistId; Future init() async { final playlists = await _db.allePlaylists(); final vorhanden = playlists.where((p) => p['name'] == '⭐ Favoriten').toList(); if (vorhanden.isNotEmpty) { _favoritenPlaylistId = vorhanden.first['id'] as int; } else { _favoritenPlaylistId = await _db.playlistErstellen('⭐ Favoriten'); } } Future istFavorit(int songId) async { if (_favoritenPlaylistId == null) return false; final songs = await _db.songsDerPlaylist(_favoritenPlaylistId!); return songs.any((s) => s.id == songId); } Future umschalten(int songId) async { if (_favoritenPlaylistId == null) return; if (await istFavorit(songId)) { await _db.songAusPlaylistEntfernen(_favoritenPlaylistId!, songId); } else { final songs = await _db.songsDerPlaylist(_favoritenPlaylistId!); await _db.songZurPlaylist(_favoritenPlaylistId!, songId, songs.length); } } Future> alleFavoriten() async { if (_favoritenPlaylistId == null) return []; return _db.songsDerPlaylist(_favoritenPlaylistId!); } Future> favoritenIds() async { if (_favoritenPlaylistId == null) return {}; final d = await _db.db; final rows = await d.rawQuery( 'SELECT song_id FROM playlist_songs WHERE playlist_id = ?', [_favoritenPlaylistId], ); return rows.map((r) => r['song_id'] as int).toSet(); } }