Coverage for app / models.py: 95%

19 statements  

« prev     ^ index     » next       coverage.py v7.13.0, created at 2025-12-16 13:09 +0000

1from typing import Any, Self 

2 

3from pydantic import BaseModel, field_validator, model_validator 

4 

5from app.custom_types import SupportedDialects 

6 

7 

8class CreateTranslation(BaseModel): 

9 from_dialect: SupportedDialects 

10 to_dialect: SupportedDialects | None = None 

11 sql: str 

12 

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 

19 

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 

25 

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 }