"""Track and Artist domain entities."""

import datetime as dt
import uuid
from dataclasses import dataclass


@dataclass(frozen=True, slots=True)
class Artist:
    id: uuid.UUID
    name: str
    created_at: dt.datetime
    updated_at: dt.datetime


@dataclass(frozen=True, slots=True)
class Track:
    id: uuid.UUID
    title: str
    artist_id: uuid.UUID
    album_id: uuid.UUID | None
    storage_uri: str
    file_format: str
    file_size: int
    source: str
    source_id: str
    duration_seconds: int | None
    genre: str | None
    year: int | None
    track_number: int | None
    metadata_status: str
    metadata_error: str | None
    enriched_at: dt.datetime | None
    created_at: dt.datetime
    updated_at: dt.datetime
