24 lines
842 B
Python
24 lines
842 B
Python
"""ORM model for albums."""
|
|
|
|
import uuid
|
|
|
|
from sqlalchemy import ForeignKey, Integer, String
|
|
from sqlalchemy.orm import Mapped, mapped_column
|
|
|
|
from app.infrastructure.db.base import Base
|
|
from app.infrastructure.db.models.mixins import TimestampMixin, UUIDPrimaryKeyMixin
|
|
|
|
|
|
class AlbumModel(UUIDPrimaryKeyMixin, TimestampMixin, Base):
|
|
__tablename__ = "albums"
|
|
|
|
title: Mapped[str] = mapped_column(String(1024), index=True, nullable=False)
|
|
artist_id: Mapped[uuid.UUID] = mapped_column(
|
|
ForeignKey("artists.id", ondelete="CASCADE"),
|
|
index=True,
|
|
nullable=False,
|
|
)
|
|
year: Mapped[int | None] = mapped_column(Integer, nullable=True)
|
|
cover_path: Mapped[str | None] = mapped_column(String(1024), nullable=True)
|
|
musicbrainz_id: Mapped[str | None] = mapped_column(String(36), index=True, nullable=True)
|