dict-server/app/schemas/trans_schemas.py

30 lines
852 B
Python

from typing import Literal
from pydantic import BaseModel, field_validator, model_validator
class TransRequest(BaseModel):
query: str
from_lang: Literal['auto', 'fr', 'jp', 'zh'] = 'auto'
to_lang: Literal['fr', 'jp', 'zh'] = 'zh'
@field_validator('from_lang', 'to_lang')
@classmethod
def validate_lang(cls, v):
allowed_langs = {'auto', 'fr', 'jp', 'zh'}
if v not in allowed_langs:
raise ValueError(f'Unsupported language: {v}')
return v
@model_validator(mode="after")
def check_lang(self):
if self.from_lang == self.to_lang:
raise ValueError("from_lang and to_lang cannot be the same")
elif self.to_lang == 'auto':
raise ValueError("to_lang cannot be 'auto'")
return self
class TransResponse(BaseModel):
translated_text: str