| from typing import Optional |
| from pydantic import BaseModel, Field |
|
|
| class EntryMeta(BaseModel): |
| voiceText: Optional[str] = None |
| asrConfidence: Optional[float] = Field(default=None, ge=0, le=1) |
| lang: Optional[str] = None |
|
|
|
|
| class EntryCreate(BaseModel): |
| entryType: str |
| category: str |
| amount: float |
| date: Optional[str] = None |
| currency: str = Field(default="PKR", min_length=1) |
| paymentMethod: str = Field(default="cash") |
| notes: Optional[str] = None |
| recordedBy: str |
| deviceId: Optional[str] = None |
| meta: Optional[EntryMeta] = None |
|
|
|
|
| class EntryResponse(BaseModel): |
| id: str |
| type: str = Field(default="entry") |
| entryType: str |
| category: str |
| amount: float |
| currency: str |
| paymentMethod: str |
| notes: Optional[str] |
| createdAt: str |
| recordedBy: str |
| deviceId: Optional[str] |
| syncStatus: str = Field(default="local") |
| meta: Optional[EntryMeta] |
|
|