[meal] allow edit
Some checks are pending
Python lint and test / linttest (push) Waiting to run

This commit is contained in:
Piotr Domański 2026-04-01 23:43:54 +02:00
parent af6c753e90
commit 2123f55eab
5 changed files with 38 additions and 5 deletions

View file

@ -19,21 +19,24 @@ services:
build: build:
dockerfile: Dockerfile dockerfile: Dockerfile
context: . context: .
platform: linux/amd64
networks: networks:
- fooder - fooder
env_file: env_file:
- .env - .env
ports: ports:
- "8000:8000" - "8000:8000"
command: "uvicorn fooder.app:app --host 0.0.0.0 --port 8000 --workers 1 --reload"
tasks: tasks:
restart: unless-stopped restart: unless-stopped
image: registry.domandoman.xyz/fooder/api image: registry.domandoman.xyz/fooder/api
networks: networks:
- fooder - fooder
platform: linux/amd64
env_file: env_file:
- .env - .env
command: "uvicorn fooder.tasks_app:app --host 0.0.0.0 --port 8000 --workers 1" command: "uvicorn fooder.tasks_app:app --host 0.0.0.0 --port 8000 --workers 1 --reload"
cron: cron:
restart: unless-stopped restart: unless-stopped
@ -41,6 +44,7 @@ services:
build: build:
dockerfile: Dockerfile.cron dockerfile: Dockerfile.cron
context: . context: .
platform: linux/amd64
networks: networks:
- fooder - fooder
env_file: env_file:

View file

@ -7,6 +7,7 @@ from ..model.meal import (
CreateMealFromPresetPayload, CreateMealFromPresetPayload,
CreateMealPayload, CreateMealPayload,
Meal, Meal,
RenameMealPayload,
SaveMealPayload, SaveMealPayload,
) )
from ..model.preset import Preset from ..model.preset import Preset
@ -48,6 +49,17 @@ class SaveMeal(AuthorizedController):
raise HTTPException(status_code=400, detail=e.args[0]) raise HTTPException(status_code=400, detail=e.args[0])
class RenameMeal(AuthorizedController):
async def call(self, meal_id: int, payload: RenameMealPayload) -> Meal:
async with self.async_session.begin() as session:
meal = await DBMeal.get_by_id(session, self.user.id, meal_id)
if meal is None:
raise HTTPException(status_code=404, detail="meal not found")
meal.name = payload.name
await session.flush()
return Meal.from_orm(meal)
class DeleteMeal(AuthorizedController): class DeleteMeal(AuthorizedController):
async def call(self, meal_id: int) -> None: async def call(self, meal_id: int) -> None:
async with self.async_session.begin() as session: async with self.async_session.begin() as session:

View file

@ -33,6 +33,6 @@ class CreateEntryPayload(BaseModel):
class UpdateEntryPayload(BaseModel): class UpdateEntryPayload(BaseModel):
"""CreateEntryPayload.""" """CreateEntryPayload."""
grams: Optional[float] grams: Optional[float] = None
product_id: Optional[int] product_id: Optional[int] = None
meal_id: Optional[int] meal_id: Optional[int] = None

View file

@ -30,6 +30,12 @@ class CreateMealPayload(BaseModel):
diary_id: int diary_id: int
class RenameMealPayload(BaseModel):
"""RenameMealPayload."""
name: str
class SaveMealPayload(BaseModel): class SaveMealPayload(BaseModel):
"""SaveMealPayload.""" """SaveMealPayload."""

View file

@ -1,10 +1,11 @@
from fastapi import APIRouter, Depends, Request from fastapi import APIRouter, Depends, Request
from ..controller.meal import CreateMeal, CreateMealFromPreset, DeleteMeal, SaveMeal from ..controller.meal import CreateMeal, CreateMealFromPreset, DeleteMeal, RenameMeal, SaveMeal
from ..model.meal import ( from ..model.meal import (
CreateMealFromPresetPayload, CreateMealFromPresetPayload,
CreateMealPayload, CreateMealPayload,
Meal, Meal,
RenameMealPayload,
SaveMealPayload, SaveMealPayload,
) )
from ..model.preset import Preset from ..model.preset import Preset
@ -31,6 +32,16 @@ async def save_meal(
return await contoller.call(meal_id, data) return await contoller.call(meal_id, data)
@router.patch("/{meal_id}", response_model=Meal)
async def rename_meal(
request: Request,
meal_id: int,
data: RenameMealPayload,
contoller: RenameMeal = Depends(RenameMeal),
):
return await contoller.call(meal_id, data)
@router.delete("/{meal_id}") @router.delete("/{meal_id}")
async def delete_meal( async def delete_meal(
request: Request, request: Request,