add serializer functions for track and album objects

This commit is contained in:
mungai-njoroge
2023-06-24 16:47:54 +03:00
parent 88be80b25d
commit dbfa395207
7 changed files with 169 additions and 43 deletions
+28
View File
@@ -0,0 +1,28 @@
from dataclasses import asdict
from app.models.track import Track
def track_serializer(track: Track, _remove: set = {}, retain_disc=False) -> dict:
album_dict = asdict(track)
to_remove = {
"date",
"genre",
"last_mod",
"og_title",
"og_album",
}.union(_remove)
if not retain_disc:
to_remove.union("disc", "track")
to_remove.update(key for key in album_dict.keys() if key.startswith("is_"))
for key in to_remove:
album_dict.pop(key, None)
return album_dict
def serialize_tracks(
tracks: list[Track], _remove: set = {}, retain_disc=False
) -> list[dict]:
return [track_serializer(t, _remove, retain_disc) for t in tracks]