1. Nessa aula vamos realizar o teste em cadastro de tarefas.
  2. Vamos criar o arquivo task_schema.py e adicionar o seguinte código:
from pydantic import BaseModel, Field
from typing import Optional
from uuid import UUID
from datetime import datetime

class TaskCreate(BaseModel):
    title: str = Field(..., title='Título', min_length=3, max_length=50)
    description: str = Field(..., title='Descrição', min_length=3, max_length=150)
    status: Optional[bool] = False
    
class TaskUpdate(BaseModel):
    title: Optional[str]
    description: Optional[str]
    status: Optional[bool] = False
    
class TaskDetail(BaseModel):
    task_id: UUID
    status: bool
    title: str
    description: str
    created_at: datetime
    updadet_at: datetime
  1. Vamos adicionar o seguinte código no arquivo task.py
from fastapi import APIRouter, Depends
from schemas.task_schema import TaskDetail, TaskCreate
from models.user_model import User
from api.dependencies.user_deps import get_current_user
from services.task_service import TaskService
from models.task_model import Task
from typing import List

task_router = APIRouter()

@task_router.get('/', summary='Lista as Tarefas', response_model=List[TaskDetail])
async def list_tasks(user: User = Depends(get_current_user)):
    return await TaskService.list_tasks(user)

@task_router.post('/create', summary='Adiciona Tarefa', response_model=Task)
async def create_task(data: TaskCreate, user: User = Depends(get_current_user)):
    return await TaskService.create_task(user, data)
4 - Vamos adicionar o seguinte código no arquivo task_service.py
from fastapi import APIRouter, Depends
from schemas.todo_schema import TodoDetail, TodoCreate, TodoUpdate
from models.user_model import User
from api.dependencies.user_deps import get_current_user
from services.todo_service import TodoService
from models.todo_model import Todo
from typing import List
from uuid import UUID

todo_router = APIRouter()

@todo_router.get('/', summary="Lista Todas as Notas", response_model=List[TodoDetail])
async def list(current_user: User = Depends(get_current_user)):
    return await TodoService.list_todos(current_user) 

@todo_router.post('/create', summary="Adicionando Nota", response_model=Todo)
async def create_todo(data: TodoCreate, current_user: User = Depends(get_current_user)):
    return await TodoService.create_todo(current_user, data)

@todo_router.get('/{todo_id}', summary='Detalhe de Nota por Id', response_model=TodoDetail)
async def detail(todo_id: UUID, current_user: User = Depends(get_current_user)):
    return await TodoService.detail(current_user, todo_id)

@todo_router.put('/{todo_id}', summary='Atualiza Nota', response_model=TodoDetail)
async def update(todo_id: UUID, data: TodoUpdate, current_user: User = Depends(get_current_user)):
    return await TodoService.update_todo(current_user, todo_id, data)

@todo_router.delete('/{todo_id}', summary='Exclui Nota')
async def delete(todo_id: UUID, current_user: User = Depends(get_current_user)):
    await TodoService.delete_todo(current_user, todo_id)
    return None