34 lines
1 KiB
Python
34 lines
1 KiB
Python
from typing import Optional
|
|
|
|
from app.models import Base
|
|
from sqlalchemy.orm import Mapped, mapped_column
|
|
from sqlalchemy import BigInteger, LargeBinary, Integer, JSON
|
|
|
|
|
|
class Track(Base):
|
|
__tablename__ = 'tracks'
|
|
id: Mapped[int] = mapped_column(primary_key=True)
|
|
|
|
telegram_id: Mapped[Optional[int]] = mapped_column(BigInteger)
|
|
telegram_access_hash: Mapped[Optional[int]] = mapped_column(BigInteger)
|
|
telegram_file_reference: Mapped[Optional[bytes]] = mapped_column(LargeBinary)
|
|
yt_id: Mapped[Optional[str]]
|
|
|
|
spotify_id: Mapped[Optional[str]]
|
|
ymusic_id: Mapped[Optional[str]]
|
|
|
|
name: Mapped[str]
|
|
artist: Mapped[str]
|
|
cover_url: Mapped[str]
|
|
used_times: Mapped[int] = mapped_column(Integer, default=1)
|
|
|
|
def __hash__(self):
|
|
return hash(self.spotify_id or self.ymusic_id)
|
|
|
|
def __eq__(self, other):
|
|
if not isinstance(other, Track):
|
|
return NotImplemented
|
|
return (self.spotify_id or self.ymusic_id) == (other.spotify_id or other.spotify_id)
|
|
|
|
|
|
__all__ = ['Track']
|