Files
sdb2-backend/app/models/playlist_sound.py
JSC 4cec3b9d18
All checks were successful
Backend CI / lint (push) Successful in 9m21s
Backend CI / test (push) Successful in 4m0s
feat: Enhance timestamp management in BaseModel and PlaylistRepository; add automatic updates and improve code readability
2025-08-16 00:19:53 +02:00

40 lines
1.1 KiB
Python

from typing import TYPE_CHECKING
from sqlmodel import Field, Relationship, UniqueConstraint
from app.models.base import BaseModel
if TYPE_CHECKING:
from app.models.playlist import Playlist
from app.models.sound import Sound
class PlaylistSound(BaseModel, table=True):
"""Database model for a sound in a playlist."""
__tablename__ = "playlist_sound" # pyright: ignore[reportAssignmentType]
playlist_id: int = Field(foreign_key="playlist.id", nullable=False)
sound_id: int = Field(foreign_key="sound.id", nullable=False)
position: int = Field(default=0, ge=0, nullable=False)
# constraints
__table_args__ = (
UniqueConstraint(
"playlist_id",
"sound_id",
name="uq_playlist_sound_playlist_sound",
),
UniqueConstraint(
"playlist_id",
"position",
name="uq_playlist_sound_playlist_position",
),
)
# relationships
playlist: "Playlist" = Relationship(back_populates="playlist_sounds")
sound: "Sound" = Relationship(back_populates="playlist_sounds")