commit inicial
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
from sqlalchemy import Column, Integer, String, DateTime, Boolean, ForeignKey, UniqueConstraint, Index
|
||||
from sqlalchemy.sql import func
|
||||
from app.database import Base
|
||||
|
||||
|
||||
class Playlist(Base):
|
||||
__tablename__ = "playlists"
|
||||
|
||||
id = Column(Integer, primary_key=True, index=True)
|
||||
name = Column(String, nullable=False)
|
||||
spotify_id = Column(String, nullable=False, unique=True)
|
||||
spotify_type = Column(String, nullable=False, default="playlist") # playlist | album | artist | track
|
||||
description = Column(String, default="")
|
||||
image_url = Column(String, default="")
|
||||
emoji = Column(String, default="") # si está definido, reemplaza la imagen
|
||||
created_at = Column(DateTime(timezone=True), server_default=func.now())
|
||||
|
||||
|
||||
class VotingConfig(Base):
|
||||
"""Single-row table — always query .first()."""
|
||||
__tablename__ = "voting_config"
|
||||
|
||||
id = Column(Integer, primary_key=True)
|
||||
start_time = Column(String, nullable=False, default="12:00") # "HH:MM"
|
||||
end_time = Column(String, nullable=False, default="13:00") # "HH:MM"
|
||||
is_active = Column(Boolean, default=False, nullable=False)
|
||||
updated_at = Column(DateTime(timezone=True), server_default=func.now(), onupdate=func.now())
|
||||
|
||||
|
||||
class Vote(Base):
|
||||
__tablename__ = "votes"
|
||||
|
||||
id = Column(Integer, primary_key=True)
|
||||
playlist_id = Column(Integer, ForeignKey("playlists.id", ondelete="CASCADE"), nullable=False)
|
||||
voter_token = Column(String, nullable=False)
|
||||
voted_at = Column(DateTime(timezone=True), nullable=False)
|
||||
|
||||
__table_args__ = (Index("ix_vote_voter_token_time", "voter_token", "voted_at"),)
|
||||
|
||||
|
||||
class PlayHistory(Base):
|
||||
__tablename__ = "play_history"
|
||||
|
||||
id = Column(Integer, primary_key=True)
|
||||
track_id = Column(String, nullable=False)
|
||||
track_name = Column(String, nullable=False)
|
||||
artists = Column(String, nullable=False) # "Artist1, Artist2"
|
||||
genres = Column(String, default="") # "rock, pop"
|
||||
played_at = Column(DateTime(timezone=True), nullable=False)
|
||||
|
||||
__table_args__ = (UniqueConstraint("track_id", "played_at", name="uq_track_played_at"),)
|
||||
Reference in New Issue
Block a user