listenshare-bot/app/models/track.py
Mootfrost aff9e76a4c
All checks were successful
Deploy Service / deploy (push) Successful in 27s
Fix id overflow
2025-04-15 18:18:25 +03:00

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(BigInteger, 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']