AIdea-Server / src /api /category_routes.py
Ahmed Mostafa
v1.5
d74863e
from typing import List
from fastapi import APIRouter, Depends, HTTPException, status
from sqlmodel import select
from sqlmodel.ext.asyncio.session import AsyncSession
from src.db.database import get_session
from src.db.models import User, Category
from src.auth.dependencies import get_current_user
from pydantic import BaseModel
router = APIRouter(prefix="/categories", tags=["Categories"])
class CategoryCreate(BaseModel):
name: str
description: str = None
@router.get("", response_model=List[Category])
async def list_categories(
session: AsyncSession = Depends(get_session),
current_user: User = Depends(get_current_user)
):
statement = select(Category).where(Category.user_id == current_user.id)
result = await session.exec(statement)
return result.all()
@router.post("", response_model=Category, status_code=status.HTTP_201_CREATED)
async def create_category(
data: CategoryCreate,
session: AsyncSession = Depends(get_session),
current_user: User = Depends(get_current_user)
):
new_cat = Category(
name=data.name,
description=data.description,
user_id=current_user.id
)
session.add(new_cat)
await session.commit()
await session.refresh(new_cat)
return new_cat