Files
plex-playlist-old/src/playlist/data/models.py
2022-03-08 16:46:40 -05:00

42 lines
1.3 KiB
Python

"""Contains the data models used throughout the application."""
import dataclasses
import datetime
import desert
import marshmallow
from playlist.data import base
from playlist.data.sql import db
@dataclasses.dataclass
class Track(db.Model, base.BaseData): # type: ignore [misc]
"""Model defining a Track object."""
___tablename__ = "tracks"
id: int = dataclasses.field(
init=False,
repr=False,
default=db.Column(db.Integer(), primary_key=True),
)
plex_id: int = db.Column(db.Integer)
track_num: int = db.Column(db.Integer)
title: str = db.Column(db.String)
artist: str = db.Column(db.String)
album_num: int = db.Column(db.Integer)
album: str = db.Column(db.String)
album_artist: str = db.Column(db.String)
duration: int = db.Column(db.Integer)
comments: str = db.Column(db.String)
added: datetime.datetime = db.Column(db.DateTime)
play_count: int = db.Column(db.Integer)
rating: int | None = dataclasses.field(
default=db.Column(db.Integer(), nullable=True, default=None),
metadata=desert.metadata(marshmallow.fields.Int(allow_none=True)),
)
played: datetime.datetime | None = dataclasses.field(
default=db.Column(db.Integer, nullable=True, default=None),
metadata=desert.metadata(marshmallow.fields.DateTime(allow_none=True)),
)