from uuid import uuid4 from fastapi import APIRouter, Depends from sqlalchemy.ext.asyncio import AsyncSession from schemas import ItemCreate from models import Item, Tag from database import get_db from sqlalchemy import select from sqlalchemy.orm import selectinload from config import FIXED_USER_ID router = APIRouter() @router.post("/items/") async def create_item(item: ItemCreate, db: AsyncSession = Depends(get_db)): user_id = FIXED_USER_ID db_item = Item(id=uuid4(), name=item.name, user_id=user_id) tags = [] for tag_name in item.tag_names: result = await db.execute(select(Tag).where(Tag.name == tag_name, Tag.user_id == user_id)) tag = result.scalar_one_or_none() if not tag: tag = Tag(id=uuid4(), name=tag_name, user_id=user_id) db.add(tag) tags.append(tag) db_item.tags = tags db.add(db_item) await db.commit() return {"status": "item created", "item_id": str(db_item.id)} @router.get("/items/") async def read_items(db: AsyncSession = Depends(get_db)): user_id = FIXED_USER_ID result = await db.execute(select(Item).where(Item.user_id == user_id).options(selectinload(Item.tags))) items = result.scalars().all() for item in items: print(f"DEBUG: Item {item.id}: {item.name} - Tags: {[tag.name for tag in item.tags]}") return {"items" : [item.name for item in items]}