68 lines
2.6 KiB
Python
68 lines
2.6 KiB
Python
from pydantic import BaseModel, Field
|
|
from datetime import datetime, timezone
|
|
|
|
|
|
class Song(BaseModel):
|
|
id: int | None = Field(
|
|
default=None, description="Database ID of the song.", example=1
|
|
)
|
|
year: int = Field(description="Year of the Eurovision contest.", example=2023)
|
|
country_fi: str = Field(description="Country of the song.", example="Suomi")
|
|
country_en: str = Field(description="Country of the song.", example="Finland")
|
|
country_code: str = Field(description="Country code of the song.", example="FIN")
|
|
artist: str = Field(description="Artist of the song.", example="Käärijä")
|
|
title: str = Field(description="Title of the song.", example="Cha Cha Cha")
|
|
running_order: int | None = Field(
|
|
default=None, description="Running order of the song.", example=13
|
|
)
|
|
img_url: str = Field(
|
|
description="URL to the artist image.",
|
|
example="https://www.youtube.com/watch?v=dQw4w9WgXcQ",
|
|
)
|
|
lyrics_url: str | None = Field(
|
|
default=None,
|
|
description="URL to the original lyrics.",
|
|
example="https://www.youtube.com/watch?v=dQw4w9WgXcQ",
|
|
)
|
|
artist_url: str | None = Field(
|
|
default=None,
|
|
description="URL to the artist's page.",
|
|
example="https://www.youtube.com/watch?v=dQw4w9WgXcQ",
|
|
)
|
|
flag_url: str | None = Field(
|
|
default=None,
|
|
description="URL to the country flag.",
|
|
example="https://www.youtube.com/watch?v=dQw4w9WgXcQ",
|
|
)
|
|
lyrics_original: str | None = Field(
|
|
default=None,
|
|
description="Original lyrics.",
|
|
example="Lyrics",
|
|
)
|
|
lyrics_translation_fi: str | None = Field(
|
|
default=None,
|
|
description="Finnish translation of the lyrics.",
|
|
example="Lyrics",
|
|
)
|
|
tags: list[str] | None = Field(
|
|
default=None,
|
|
description="Tags associated with the song.",
|
|
example=["Eskapismi", "Muutos", "Hedonismi", "Kaksijakoisuus", "Alkoholi"],
|
|
)
|
|
confidence: float | None = Field(
|
|
default=None, description="Confidence level of the translation.", example=0.95
|
|
)
|
|
language: str | None = Field(
|
|
default=None, description="Language of the song.", example="Suomi"
|
|
)
|
|
created_at: datetime = Field(
|
|
default=datetime.now(timezone.utc),
|
|
description="Time when the song was created. UTC timezone.",
|
|
example="2025-05-04T19:40:12.123456",
|
|
)
|
|
updated_at: datetime = Field(
|
|
default=datetime.now(timezone.utc),
|
|
description="Time when the song was last updated. UTC timezone.",
|
|
example="2025-05-04T19:40:12.123456",
|
|
)
|