[preset create] view for creating empty preset
Some checks failed
Python lint and test / linttest (push) Failing after 8s

This commit is contained in:
Piotr Domański 2026-04-08 19:31:48 +02:00
parent 2a5b40ea7b
commit c9bef35303
5 changed files with 38 additions and 2 deletions

View file

@ -30,6 +30,9 @@ lint: black mypy flake
version:
@echo $(VERSION)
openapi:
@curl http://localhost:8000/openapi.json -o doc/openapi.json
create-venv:
python3 -m venv .venv --prompt="fooderapi-venv" --system-site-packages
bash -c "source .venv/bin/activate && pip install -r requirements/local.txt"

File diff suppressed because one or more lines are too long

View file

@ -23,6 +23,10 @@ class PresetUpdateModel(BaseModel):
name: str | None = None
class PresetCreateModel(BaseModel):
name: str
class LoadPresetAsMealModel(BaseModel):
preset_id: int
name: str | None = None

View file

@ -92,6 +92,25 @@ async def test_list_presets_without_auth_returns_401(client):
assert response.status_code == 401
# --- create preset ---
async def test_create_preset_returns_201(auth_client):
response = await auth_client.post("/api/preset/", json={"name": "Preset name"})
assert response.status_code == 201
async def test_create_preset_sets_name(auth_client):
response = await auth_client.post("/api/preset/", json={"name": "Preset name"})
assert response.status_code == 201
assert response.json()["name"] == "Preset name"
async def test_create_preset_without_auth_returns_401(client):
response = await client.post("/api/preset/", json={"name": "x"})
assert response.status_code == 401
# --- update preset ---

View file

@ -4,7 +4,7 @@ from fooder.context import AuthContextDependency, Context
from fooder.controller.preset import PresetController
from fooder.controller.preset_entry import PresetEntryController
from fooder.model.entry import EntryCreateModel, EntryUpdateModel
from fooder.model.preset import PresetModel, PresetUpdateModel
from fooder.model.preset import PresetCreateModel, PresetModel, PresetUpdateModel
from fooder.model.preset_entry import PresetEntryModel
router = APIRouter()
@ -23,6 +23,16 @@ async def list_presets(
)
@router.post("/", response_model=PresetModel, status_code=201)
async def create_preset(
data: PresetCreateModel,
ctx: Context = Depends(_auth_ctx),
):
async with ctx.repo.transaction():
ctrl = await PresetController.create(ctx, data.name)
return ctrl.obj
@router.patch("/{preset_id}", response_model=PresetModel)
async def update_preset(
preset_id: int,