Navidrome-Integration, Widgets (Recent + Tag-Statistik)

This commit is contained in:
Hermes (Server)
2026-07-23 22:23:28 +02:00
parent 94a4063070
commit c7828b851c
16 changed files with 1434 additions and 158 deletions
+40
View File
@@ -0,0 +1,40 @@
import '../database/db_helper.dart';
import '../models/song.dart';
import '../models/playlist.dart';
class PlaylistService {
final DbHelper _db = DbHelper();
Future<List<Playlist>> allePlaylists() async {
final rows = await _db.allePlaylists();
final listen = <Playlist>[];
for (final r in rows) {
final id = r['id'] as int;
final songs = await _db.songsDerPlaylist(id);
listen.add(Playlist.fromMap(r, songCount: songs.length));
}
return listen;
}
Future<int> erstellen(String name) async {
return _db.playlistErstellen(name);
}
Future<List<Song>> songs(int playlistId) async {
return _db.songsDerPlaylist(playlistId);
}
Future<void> songHinzufuegen(int playlistId, int songId) async {
final songs = await _db.songsDerPlaylist(playlistId);
await _db.songZurPlaylist(playlistId, songId, songs.length);
}
Future<void> songEntfernen(int playlistId, int songId) async {
await _db.songAusPlaylistEntfernen(playlistId, songId);
}
Future<bool> istInPlaylist(int playlistId, int songId) async {
final songs = await _db.songsDerPlaylist(playlistId);
return songs.any((s) => s.id == songId);
}
}