Spaces:
Sleeping
Sleeping
File size: 1,260 Bytes
d74863e | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | 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
|