API refactor
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2025-10-07 16:25:52 +09:00
parent 76d0d86211
commit 91c7e04474
1171 changed files with 81940 additions and 44117 deletions

View File

@@ -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':
"""Преобразовать из серверной модели в модель для мобильного приложения"""