playlists list

This commit is contained in:
austinried
2025-12-06 10:22:14 +09:00
parent a4e4c6fa57
commit f3969dc6af
13 changed files with 1040 additions and 32 deletions

View File

@@ -8,7 +8,7 @@ part 'library_dao.g.dart';
typedef AristListItem = ({
models.Artist artist,
int? albumCount,
int albumCount,
});
typedef SongListItem = ({
@@ -182,6 +182,42 @@ class LibraryDao extends DatabaseAccessor<SubtracksDatabase>
.get();
}
Future<List<models.Playlist>> listPlaylists(PlaylistsQuery q) {
final query = playlists.select()
..where((playlists) {
var filter = playlists.sourceId.equals(q.sourceId);
for (final queryFilter in q.filter) {
filter &= switch (queryFilter) {
PlaylistsFilterPublic(:final public) => playlists.public.equals(
public,
),
PlaylistsFilterNameSearch() => CustomExpression(''),
_ => CustomExpression(''),
};
}
return filter;
})
..orderBy(
q.sort
.map(
(sort) =>
(albums) => OrderingTerm(
expression: switch (sort.by) {
PlaylistsColumn.name => playlists.name,
PlaylistsColumn.created => playlists.created,
},
mode: sort.dir.toMode(),
),
)
.toList(),
);
_limitQuery(query: query, limit: q.limit, offset: q.offset);
return query.get();
}
Selectable<models.Album> getAlbum(int sourceId, String id) {
return db.managers.albums.filter(
(f) => f.sourceId.equals(sourceId) & f.id.equals(id),