Files
plex-playlist-old/src/playlist/data/models.py
2021-10-04 15:09:23 -04:00

65 lines
2.2 KiB
Python

"""Contains the data models used throughout the application."""
import dataclasses
import datetime
import typing
import sqlalchemy.orm # type: ignore [import]
from playlist.data import base
mapper_registry = sqlalchemy.orm.registry()
@mapper_registry.mapped
@dataclasses.dataclass
class Track(base.BaseData):
"""Model defining a Track object."""
__tablename__ = "tracks"
id: int = dataclasses.field(
init=False,
metadata={"sa": sqlalchemy.Column(sqlalchemy.Integer, primary_key=True)},
)
plex_id: int = dataclasses.field(
metadata={"sa": sqlalchemy.Column(sqlalchemy.Integer, nullable=False)},
)
track_num: int = dataclasses.field(
metadata={"sa": sqlalchemy.Column(sqlalchemy.Integer, nullable=False)},
)
title: str = dataclasses.field(
metadata={"sa": sqlalchemy.Column(sqlalchemy.String(100), nullable=False)},
)
artist: str = dataclasses.field(
metadata={"sa": sqlalchemy.Column(sqlalchemy.String(100), nullable=False)},
)
album_num: int = dataclasses.field(
metadata={"sa": sqlalchemy.Column(sqlalchemy.Integer, nullable=False)},
)
album: str = dataclasses.field(
metadata={"sa": sqlalchemy.Column(sqlalchemy.String(100), nullable=False)},
)
album_artist: str = dataclasses.field(
metadata={"sa": sqlalchemy.Column(sqlalchemy.String(100), nullable=False)},
)
duration: int = dataclasses.field(
metadata={"sa": sqlalchemy.Column(sqlalchemy.Integer, nullable=False)},
)
comments: str = dataclasses.field(
metadata={"sa": sqlalchemy.Column(sqlalchemy.String(2000), nullable=False)},
)
added: datetime.datetime = dataclasses.field(
metadata={"sa": sqlalchemy.Column(sqlalchemy.DateTime, nullable=False)},
)
play_count: int = dataclasses.field(
metadata={"sa": sqlalchemy.Column(sqlalchemy.Integer, nullable=False)},
)
rating: typing.Optional[int] = dataclasses.field(
default=None,
metadata={"sa": sqlalchemy.Column(sqlalchemy.Integer)},
)
played: typing.Optional[datetime.datetime] = dataclasses.field(
default=None,
metadata={"sa": sqlalchemy.Column(sqlalchemy.DateTime)},
)