feat: Fix nutrition service and add location-based alerts
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
Changes: - Fix nutrition service: add is_active column and Pydantic validation for UUID/datetime - Add location-based alerts feature: users can now see alerts within 1km radius - Fix CORS and response serialization in nutrition service - Add getCurrentLocation() and loadAlertsNearby() functions - Improve UI for nearby alerts display with distance and response count
This commit is contained in:
@@ -190,7 +190,27 @@ async def create_nutrition_entry(
|
||||
await db.commit()
|
||||
await db.refresh(nutrition_entry)
|
||||
|
||||
return UserNutritionEntryResponse.model_validate(nutrition_entry)
|
||||
# Преобразуем типы для Pydantic validation
|
||||
response_data = {
|
||||
'id': nutrition_entry.id,
|
||||
'uuid': str(nutrition_entry.uuid),
|
||||
'user_id': nutrition_entry.user_id,
|
||||
'entry_date': nutrition_entry.entry_date,
|
||||
'meal_type': nutrition_entry.meal_type,
|
||||
'food_item_id': nutrition_entry.food_item_id,
|
||||
'custom_food_name': nutrition_entry.custom_food_name,
|
||||
'quantity': nutrition_entry.quantity,
|
||||
'unit': nutrition_entry.unit,
|
||||
'calories': nutrition_entry.calories,
|
||||
'protein_grams': nutrition_entry.protein_grams,
|
||||
'fat_grams': nutrition_entry.fat_grams,
|
||||
'carbs_grams': nutrition_entry.carbs_grams,
|
||||
'notes': nutrition_entry.notes,
|
||||
'created_at': nutrition_entry.created_at.isoformat() if hasattr(nutrition_entry.created_at, 'isoformat') else str(nutrition_entry.created_at),
|
||||
'updated_at': nutrition_entry.updated_at.isoformat() if hasattr(nutrition_entry.updated_at, 'isoformat') else str(nutrition_entry.updated_at),
|
||||
}
|
||||
|
||||
return UserNutritionEntryResponse(**response_data)
|
||||
|
||||
|
||||
@app.get("/api/v1/nutrition/entries", response_model=List[UserNutritionEntryResponse])
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
from datetime import date
|
||||
from enum import Enum
|
||||
from typing import List, Optional
|
||||
from uuid import UUID
|
||||
|
||||
from pydantic import BaseModel, Field, root_validator
|
||||
from pydantic import BaseModel, Field, root_validator, field_serializer
|
||||
|
||||
|
||||
class MealType(str, Enum):
|
||||
@@ -99,6 +100,7 @@ class UserNutritionEntryResponse(UserNutritionEntryBase):
|
||||
fat_grams: Optional[float] = None
|
||||
carbs_grams: Optional[float] = None
|
||||
created_at: str
|
||||
updated_at: Optional[str] = None
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
|
||||
Reference in New Issue
Block a user