File size: 1,346 Bytes
447d423
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
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] = []   # ← add this

    model_config = ConfigDict(extra="ignore")


class IdiomCreate(IdiomBase):
    id: str
    examples: List[Example] = []