fix: wrap abilities dict with Json() for JSONB insert (#13)
All checks were successful
Deploy Development / deploy (push) Successful in 49s
Build Test / lint-backend (push) Successful in 0s
Build Test / build-frontend (push) Successful in 13s

Problem: Creating new training types via Admin UI resulted in
'Internal Server Error' because abilities dict was passed directly
to PostgreSQL JSONB column without Json() wrapper.

Solution:
- Import Json from psycopg2.extras
- Wrap abilities_json with Json() in INSERT
- Wrap data.abilities with Json() in UPDATE

Same issue as rest_days JSONB fix (commit 7d627cf).

Closes #13
This commit is contained in:
Lars 2026-03-23 09:13:50 +01:00
parent 7a0b2097ae
commit 29770503bf

View File

@ -7,6 +7,7 @@ import logging
from typing import Optional
from fastapi import APIRouter, HTTPException, Depends
from pydantic import BaseModel
from psycopg2.extras import Json
from db import get_db, get_cursor, r2d
from auth import require_auth, require_admin
@ -103,7 +104,7 @@ def create_training_type(data: TrainingTypeCreate, session: dict = Depends(requi
data.description_de,
data.description_en,
data.sort_order,
abilities_json
Json(abilities_json)
))
new_id = cur.fetchone()['id']
@ -153,7 +154,7 @@ def update_training_type(
values.append(data.sort_order)
if data.abilities is not None:
updates.append("abilities = %s")
values.append(data.abilities)
values.append(Json(data.abilities))
if not updates:
raise HTTPException(400, "No fields to update")