|
|
from pydantic import BaseModel, ConfigDict |
|
|
from typing import Dict, Optional, List |
|
|
|
|
|
|
|
|
class Translation(BaseModel): |
|
|
language: str |
|
|
text: str |
|
|
|
|
|
model_config = ConfigDict(extra="ignore") |
|
|
|
|
|
|
|
|
class Example(BaseModel): |
|
|
id: int |
|
|
source_language: str |
|
|
source_text: str |
|
|
translations: List[Translation] = [] |
|
|
dialect: Optional[str] = None |
|
|
url: Optional[str] = None |
|
|
source: Optional[str] = None |
|
|
|
|
|
model_config = ConfigDict(extra="ignore") |
|
|
|
|
|
|
|
|
class IdiomBase(BaseModel): |
|
|
idiom: str |
|
|
language: str |
|
|
dialect: str = "unspecified" |
|
|
idiomatic_meaning: Optional[str] = "" |
|
|
literal_meaning: Optional[str] = "" |
|
|
validation_count: Dict[str, int] = {} |
|
|
quality: str = "seed" |
|
|
status: str = "pending" |
|
|
|
|
|
model_config = ConfigDict(extra="ignore") |
|
|
|
|
|
|
|
|
class Meaning(BaseModel): |
|
|
meaning_id: Optional[str] = None |
|
|
idiom_id: Optional[str] = None |
|
|
sense_number: Optional[int] = None |
|
|
register: List[str] = [] |
|
|
region: List[str] = [] |
|
|
definitions: List[str] = [] |
|
|
version: Optional[int] = None |
|
|
|
|
|
model_config = ConfigDict(extra="ignore") |
|
|
|
|
|
|
|
|
class IdiomResponse(IdiomBase): |
|
|
id: str |
|
|
examples: List[Example] = [] |
|
|
meanings: List[Meaning] = [] |
|
|
|
|
|
model_config = ConfigDict(extra="ignore") |
|
|
|
|
|
|
|
|
class IdiomCreate(IdiomBase): |
|
|
id: str |
|
|
examples: List[Example] = [] |