(back|front)end: add ability to filter by projectId

This commit is contained in:
0x1eef 2024-01-15 08:14:41 -03:00
parent fd85056711
commit 12403a6029
5 changed files with 20 additions and 11 deletions

View file

@ -5,6 +5,7 @@ module Twenty::GraphQL::Type
end
field :tasks, [Task], null: false do
argument :status, TaskStatus
argument :project_id, Int, required: false
end
field :projects, [Project], null: false
@ -12,10 +13,11 @@ module Twenty::GraphQL::Type
Twenty::Task.find_by(id: task_id)
end
def tasks(status:)
Twenty::Task
def tasks(status:, project_id: nil)
tasks = Twenty::Task
.where(status:)
.order(updated_at: :desc)
project_id ? tasks.where(project_id:) : tasks
end
def projects

View file

@ -44,7 +44,7 @@ type Project {
type Query {
findTask(taskId: Int!): Task
projects: [Project!]!
tasks(status: TaskStatus!): [Task!]!
tasks(projectId: Int, status: TaskStatus!): [Task!]!
}
type Task {

View file

@ -1,17 +1,23 @@
import React, { useEffect } from "react";
import React, { useEffect, useContext } from "react";
import { ParamContext } from "/Context";
import { NavBar } from "/components/NavBar";
import { Group } from "/components/Group";
import { TaskStatus } from "/types/schema";
import { TaskStatus, Maybe } from "/types/schema";
import { useTasks } from "/hooks/queries/useTasks";
export function Tasks() {
const params = useContext(ParamContext);
const projectId: Maybe<Number> = params.projectId
? parseInt(params.projectId)
: null;
useEffect(() => {
document.title = "Tasks";
}, []);
const getTasks = (status: TaskStatus) => {
return () => {
return useTasks({ variables: { status } });
return useTasks({ variables: { status, projectId } });
};
};

View file

@ -2,8 +2,8 @@ import { useQuery, gql } from "@apollo/client";
import { Task } from "/types/schema";
export const GET_TASKS = gql`
query GetTasks($status: TaskStatus!) {
tasks(status: $status) {
query GetTasks($status: TaskStatus!, $projectId: Int) {
tasks(status: $status, projectId: $projectId) {
id
title
status

View file

@ -80,14 +80,14 @@ export type Project = {
id: Scalars["Int"]["output"];
name: Scalars["String"]["output"];
path: Scalars["String"]["output"];
tasks: Task[];
tasks: Array<Task>;
};
export type Query = {
__typename?: "Query";
findTask?: Maybe<Task>;
projects: Project[];
tasks: Task[];
projects: Array<Project>;
tasks: Array<Task>;
};
export type QueryFindTaskArgs = {
@ -95,6 +95,7 @@ export type QueryFindTaskArgs = {
};
export type QueryTasksArgs = {
projectId?: InputMaybe<Scalars["Int"]["input"]>;
status: TaskStatus;
};