Coverage for app / models.py: 95%
19 statements
« prev ^ index » next coverage.py v7.13.0, created at 2025-12-16 13:09 +0000
« prev ^ index » next coverage.py v7.13.0, created at 2025-12-16 13:09 +0000
1from typing import Any, Self
3from pydantic import BaseModel, field_validator, model_validator
5from app.custom_types import SupportedDialects
8class CreateTranslation(BaseModel):
9 from_dialect: SupportedDialects
10 to_dialect: SupportedDialects | None = None
11 sql: str
13 @field_validator("from_dialect", "to_dialect", mode="before")
14 @classmethod
15 def lower(cls, value: str | Any) -> str | Any:
16 if isinstance(value, str):
17 return value.lower()
18 return value
20 @model_validator(mode="after")
21 def dialects_must_differ(self) -> Self:
22 if self.to_dialect is None:
23 self.to_dialect = self.from_dialect
24 return self
26 model_config = {
27 "json_schema_extra": {
28 "examples": [
29 {
30 "from_dialect": "mysql",
31 "to_dialect": "postgres",
32 "sql": "select date_format(now(), '%Y-%m-%d') as formatted_date;",
33 }
34 ]
35 }
36 }