from uuid import UUID, uuid4 from fastapi import Depends, FastAPI from sqlalchemy import select from backend.schemas import ItemCreate from models import Base, Item, Tag from database import engine, get_db from sqlalchemy.ext.asyncio import AsyncSession app = FastAPI() FIXED_USER_ID = UUID("00000000-0000-0000-0000-000000000001") @app.on_event("startup") async def startup(): async with engine.begin() as conn: await conn.run_sync(Base.metadata.create_all) @app.get("/") def read_root(): return {"status": "running"} @app.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)} @app.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)) items = result.scalars().all() return {"items" : [item.name for item in items]}