99from src .models .task_model import Task
1010from src .schemas .projects .projects_schema import ProjectResponse
1111from src .schemas .tasks .tasks_schema import TaskResponse
12- from src .utils .security import get_current_user
12+ from src .utils .security import get_current_user
1313
1414router = APIRouter (
1515 prefix = "/filters" ,
@@ -26,26 +26,33 @@ def filter_tasks(
2626 current_user : User = Depends (get_current_user )
2727):
2828 """
29- Retorna as tarefas pertencentes aos projetos do usuário logado.
30- É possível aplicar filtros por status, lembrete e data de vencimento.
29+ Return tasks filtered by completion status, reminder flag, and due date,
30+ only for tasks belonging to projects owned by the authenticated user.
31+
32+ Args:
33+ completed (Optional[bool]): Filter by completion status.
34+ reminder (Optional[bool]): Filter by reminder flag.
35+ due_before (Optional[date]): Filter tasks due before this date.
36+ db (Session): Database session.
37+ current_user (User): Authenticated user.
38+
39+ Returns:
40+ List[Task]: List of filtered tasks.
41+
42+ Raises:
43+ HTTPException: If no tasks are found.
3144 """
3245
33- # Busca apenas as tarefas de projetos pertencentes ao usuário autenticado
3446 query = (
3547 db .query (Task )
3648 .join (Project , Project .id == Task .project_id )
37- .filter (Project .owner_id == current_user .id )
49+ .filter (Project .user_id == current_user .id )
3850 )
3951
40- # Filtro por status de conclusão
4152 if completed is not None :
4253 query = query .filter (Task .completed == completed )
43-
44- # Filtro por lembrete
4554 if reminder is not None :
4655 query = query .filter (Task .reminder == reminder )
47-
48- # Filtro por data de entrega
4956 if due_before :
5057 query = query .filter (Task .due_date <= due_before )
5158
@@ -58,10 +65,22 @@ def get_projects_by_user(
5865 current_user : User = Depends (get_current_user )
5966):
6067 """
61- Retorna todos os projetos pertencentes ao usuário autenticado.
68+ Return all projects belonging to the authenticated user.
69+
70+ Args:
71+ db (Session): Database session.
72+ current_user (User): Authenticated user.
73+
74+ Returns:
75+ List[Project]: List of projects owned by the user.
76+
77+ Raises:
78+ HTTPException: If no projects are found.
6279 """
6380
64- projects = db .query (Project ).filter (Project .owner_id == current_user .id ).all ()
81+ projects = db .query (Project ).filter (Project .user_id == current_user .id ).all ()
82+ if not projects :
83+ raise HTTPException (status_code = 404 , detail = "No projects found." )
6584 return projects
6685
6786
@@ -72,11 +91,22 @@ def get_tasks_by_project(
7291 current_user : User = Depends (get_current_user )
7392):
7493 """
75- Retorna todas as tarefas de um projeto específico,
76- desde que o projeto pertença ao usuário autenticado.
94+ Return all tasks for a specific project,
95+ only if the project belongs to the authenticated user.
96+
97+ Args:
98+ project_id (int): ID of the project.
99+ db (Session): Database session.
100+ current_user (User): Authenticated user.
101+
102+ Returns:
103+ List[Task]: List of tasks for the specified project.
104+
105+ Raises:
106+ HTTPException: If the project is not found or not owned by the user.
77107 """
78108
79- project = db .query (Project ).filter (Project .id == project_id , Project .owner_id == current_user .id ).first ()
109+ project = db .query (Project ).filter (Project .id == project_id , Project .user_id == current_user .id ).first ()
80110 if not project :
81111 raise HTTPException (status_code = 404 , detail = "Project not found or not owned by user" )
82112
@@ -93,14 +123,28 @@ def advanced_filter_tasks(
93123 current_user : User = Depends (get_current_user )
94124):
95125 """
96- Filtro avançado de tarefas relacionadas ao usuário autenticado.
97- Permite combinar múltiplos parâmetros de busca.
126+ Advanced filtering for tasks related to the authenticated user.
127+ Allows combining multiple search parameters.
128+
129+ Args:
130+ completed (Optional[bool]): Filter by completion status.
131+ reminder (Optional[bool]): Filter by reminder flag.
132+ project_id (Optional[int]): Filter by project ID.
133+ due_before (Optional[date]): Filter tasks due before this date.
134+ db (Session): Database session.
135+ current_user (User): Authenticated user.
136+
137+ Returns:
138+ List[Task]: List of filtered tasks.
139+
140+ Raises:
141+ HTTPException: If no tasks are found.
98142 """
99143
100144 query = (
101145 db .query (Task )
102146 .join (Project , Project .id == Task .project_id )
103- .filter (Project .owner_id == current_user .id )
147+ .filter (Project .user_id == current_user .id )
104148 )
105149
106150 if completed is not None :
0 commit comments