40 lines
1.2 KiB
Python
40 lines
1.2 KiB
Python
"""Favorite response schemas."""
|
|
|
|
from datetime import datetime
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class FavoriteResponse(BaseModel):
|
|
"""Response schema for a favorite."""
|
|
|
|
id: int = Field(description="Favorite ID")
|
|
user_id: int = Field(description="User ID")
|
|
sound_id: int | None = Field(
|
|
description="Sound ID if this is a sound favorite", default=None,
|
|
)
|
|
playlist_id: int | None = Field(
|
|
description="Playlist ID if this is a playlist favorite", default=None,
|
|
)
|
|
created_at: datetime = Field(description="Creation timestamp")
|
|
updated_at: datetime = Field(description="Last update timestamp")
|
|
|
|
class Config:
|
|
"""Pydantic config."""
|
|
|
|
from_attributes = True
|
|
|
|
|
|
class FavoritesListResponse(BaseModel):
|
|
"""Response schema for a list of favorites."""
|
|
|
|
favorites: list[FavoriteResponse] = Field(description="List of favorites")
|
|
|
|
|
|
class FavoriteCountsResponse(BaseModel):
|
|
"""Response schema for favorite counts."""
|
|
|
|
total: int = Field(description="Total number of favorites")
|
|
sounds: int = Field(description="Number of favorited sounds")
|
|
playlists: int = Field(description="Number of favorited playlists")
|