Allow to filter requirements by status on GraphQL
What does this MR do?
Allow filtering requirements by status on GraphQL
Sample query
query passingRequirements {
project(fullPath: "flightjs/flight") {
requirements(lastTestReportState: PASSED) {
edges {
node {
id
title
}
}
}
}
}
Query to fetch requirements
SELECT "requirements".*
FROM "requirements"
INNER JOIN lateral
( SELECT DISTINCT ON (requirement_id) requirement_id, state
FROM requirements_management_test_reports
WHERE requirement_id = requirements.id
ORDER BY requirement_id, created_at DESC limit 1
) AS test_reports ON true
WHERE "requirements"."project_id" = 278964
AND "test_reports"."state" = 1
ORDER BY "requirements"."id" DESC
Query plan
Sort (cost=200.79..200.85 rows=24 width=334) (actual time=0.398..0.398 rows=3 loops=1)
Sort Key: requirements.id DESC
Sort Method: quicksort Memory: 26kB
-> Nested Loop (cost=7.17..200.24 rows=24 width=334) (actual time=0.133..0.333 rows=3 loops=1)
-> Index Scan using index_requirements_on_project_id on requirements (cost=0.28..34.36 rows=24
width=334) (actual time=0.062..0.120 rows=24 loops=1)
Index Cond: (project_id = 278964)
-> Subquery Scan on test_reports (cost=6.89..6.90 rows=1 width=0) (actual time=0.008..0.008 ro
ws=0 loops=24)
Filter: (test_reports.state = 1)
Rows Removed by Filter: 0
-> Limit (cost=6.89..6.89 rows=1 width=18) (actual time=0.008..0.008 rows=0 loops=24)
-> Unique (cost=6.89..6.90 rows=6 width=18) (actual time=0.007..0.007 rows=0 loops
=24)
-> Sort (cost=6.89..6.90 rows=6 width=18) (actual time=0.007..0.007 rows=0 l
oops=24)
Sort Key: requirements_management_test_reports.created_at DESC
Sort Method: quicksort Memory: 25kB
-> Index Scan using index_requirements_management_test_reports_on_requi
rement_id on requirements_management_test_reports (cost=0.28..6.81 rows=6 width=18) (actual time=0.005..
0.005 rows=1 loops=24)
Index Cond: (requirement_id = requirements.id)
Planning Time: 0.344 ms
Execution Time: 0.462 ms
(18 rows)
related to #224614 (closed)