Filter projects by compliance framework presence
What does this MR do and why?
Adds filter to check presence of compliance framework of the project. we can pass "none" or "any" in projects graphql query.
How to set up and validate locally
- Create a group
- Create 3 projects, project_a project_b project_c
- Create two compliance frameworks for the group. refer https://docs.gitlab.com/ee/user/group/compliance_frameworks.html
- Add 1 compliance framework to project_a and another to project_b
- Test group search query with presence: NONE and ANY.
ANY query should return project_a and project_b NONE query should return project_c
query SearchGroup {
group(fullPath: "complianceframework") {
name
projects(complianceFrameworkFilters: {presence_filter: NONE}) {
nodes {
id
fullPath
complianceFrameworks {
edges {
node {
id
}
}
}
name
}
pageInfo {
endCursor
startCursor
hasNextPage
}
}
}
}
query SearchGroup {
group(fullPath: "complianceframework") {
name
projects(complianceFrameworkFilters: {presence_filter: ANY}) {
nodes {
id
fullPath
complianceFrameworks {
edges {
node {
id
}
}
}
name
}
pageInfo {
endCursor
startCursor
hasNextPage
}
}
}
}
QUERY PLANS
SQL
NONE filter
SELECT projects.*
FROM projects
LEFT OUTER JOIN project_compliance_framework_settings
ON project_compliance_framework_settings.project_id =
projects.id
WHERE projects.namespace_id = 88
AND project_compliance_framework_settings.project_id IS NULL
https://console.postgres.ai/gitlab/gitlab-production-tunnel-pg12/sessions/16296/commands/56000
ANY filter
SELECT projects.*
FROM projects
INNER JOIN project_compliance_framework_settings
ON project_compliance_framework_settings.project_id = projects.id
WHERE projects.namespace_id = 88
https://console.postgres.ai/gitlab/gitlab-production-tunnel-pg12/sessions/16296/commands/55999
MR acceptance checklist
This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.
-
I have evaluated the MR acceptance checklist for this MR.
Related to #388188 (closed)
Edited by Harsimar Sandhu