This commit is contained in:
@@ -1,8 +1,10 @@
|
||||
from datetime import date, datetime
|
||||
from enum import Enum
|
||||
from typing import List, Optional, Union
|
||||
from typing import List, Optional, Union, Any
|
||||
import uuid
|
||||
from uuid import UUID
|
||||
|
||||
from pydantic import BaseModel, Field
|
||||
from pydantic import BaseModel, Field, field_serializer, ConfigDict
|
||||
|
||||
|
||||
class EntryType(str, Enum):
|
||||
@@ -175,29 +177,36 @@ class CalendarEntryCreate(CalendarEntryBase):
|
||||
|
||||
class CalendarEntryResponse(BaseModel):
|
||||
id: int
|
||||
uuid: str
|
||||
uuid: UUID # Используем UUID из uuid модуля
|
||||
entry_date: date
|
||||
entry_type: str
|
||||
flow_intensity: Optional[str]
|
||||
period_symptoms: Optional[str]
|
||||
mood: Optional[str]
|
||||
energy_level: Optional[int]
|
||||
sleep_hours: Optional[int]
|
||||
symptoms: Optional[str]
|
||||
medications: Optional[str]
|
||||
notes: Optional[str]
|
||||
flow_intensity: Optional[str] = None
|
||||
period_symptoms: Optional[str] = None
|
||||
mood: Optional[str] = None
|
||||
energy_level: Optional[int] = None
|
||||
sleep_hours: Optional[int] = None
|
||||
symptoms: Optional[str] = None
|
||||
medications: Optional[str] = None
|
||||
notes: Optional[str] = None
|
||||
is_predicted: bool
|
||||
confidence_score: Optional[int]
|
||||
confidence_score: Optional[int] = None
|
||||
created_at: datetime
|
||||
updated_at: Optional[datetime] = None
|
||||
is_active: Optional[bool] = None
|
||||
user_id: Optional[int] = None
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
@field_serializer('uuid')
|
||||
def serialize_uuid(self, uuid_val: UUID) -> str:
|
||||
"""Преобразование UUID в строку для JSON-сериализации"""
|
||||
return str(uuid_val)
|
||||
|
||||
|
||||
# Модель ответа для мобильного приложения
|
||||
class CalendarEvent(BaseModel):
|
||||
id: int
|
||||
uuid: str
|
||||
uuid: UUID # Используем тип UUID из модуля uuid
|
||||
date: date
|
||||
type: str
|
||||
flow_intensity: Optional[int] = None
|
||||
@@ -206,6 +215,8 @@ class CalendarEvent(BaseModel):
|
||||
notes: Optional[str] = None
|
||||
created_at: datetime
|
||||
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
@classmethod
|
||||
def from_server_response(cls, entry: CalendarEntryResponse) -> 'CalendarEvent':
|
||||
"""Преобразовать из серверной модели в модель для мобильного приложения"""
|
||||
|
||||
Reference in New Issue
Block a user