Add group field to query all maven virtual registry upstreams
What does this MR do and why?
Add virtualRegistriesPackagesMavenUpstreams field to Group EE query
Adds search by upstream name functionality
Update permissions for mavenVirtualRegistries field.
EE: true
References
- This query will be used to implement #556837[UpstreamsList.png]
Database review
Raw SQL
SELECT "virtual_registries_settings".* FROM "virtual_registries_settings" WHERE "virtual_registries_settings"."group_id" = 22 LIMIT 1
SELECT COUNT(*) FROM "virtual_registries_packages_maven_upstreams" WHERE "virtual_registries_packages_maven_upstreams"."group_id" = 22
SELECT "virtual_registries_packages_maven_upstreams".* FROM "virtual_registries_packages_maven_upstreams" WHERE "virtual_registries_packages_maven_upstreams"."group_id" = 22 ORDER BY "virtual_registries_packages_maven_upstreams"."id" ASC LIMIT 101
SELECT "virtual_registries_packages_maven_registry_upstreams".* FROM "virtual_registries_packages_maven_registry_upstreams" WHERE "virtual_registries_packages_maven_registry_upstreams"."upstream_id" IN (36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136)
SELECT "virtual_registries_packages_maven_registries".* FROM "virtual_registries_packages_maven_registries" WHERE "virtual_registries_packages_maven_registries"."id" IN (28, 37, 29, 44, 30, 32, 33, 34, 36, 38, 39, 40, 41, 42, 45, 46, 31, 47, 35, 43)
SELECT COUNT(*) AS "count_all", "virtual_registries_packages_maven_registry_upstreams"."upstream_id" AS "virtual_registries_packages_maven_registry_upstreams_upstream_i" FROM "virtual_registries_packages_maven_registry_upstreams" WHERE "virtual_registries_packages_maven_registry_upstreams"."upstream_id" IN (135, 134, 133, 132, 131, 130, 129, 128, 127, 126, 125, 124, 123, 122, 121, 120, 119, 118, 117, 116, 115, 114, 113, 112, 111, 110, 109, 108, 107, 106, 105, 104, 103, 102, 101, 100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36) GROUP BY "virtual_registries_packages_maven_registry_upstreams"."upstream_id"
Query plan: https://console.postgres.ai/gitlab/gitlab-production-main/sessions/44434/commands/136207
Screenshots or screen recordings
N/A
How to set up and validate locally
- Run the following in the rails console
Feature.enable(:maven_virtual_registry)
g = Group.find(1) // must be a root group
r = VirtualRegistries::Packages::Maven::Registry.create(group: g, name: 'app-test')
# create an upstream, note: if you get validation error for local URL you need to comment out url validations in ee/app/models/virtual_registries/packages/maven/upstream.rb
u = VirtualRegistries::Packages::Maven::Upstream.create!(group: g, url: 'http://local.test/maven/', name: 'Upstream')
# create a registry_upstream join table row
VirtualRegistries::Packages::Maven::RegistryUpstream.create!(group: g, registry: r, upstream: u)
- Run the query in
/-/graphql-explorer
query {
group(fullPath: "<group-path>") {
virtualRegistriesPackagesMavenUpstreams(upstreamName: "test", first: 10) {
count
nodes {
id
name
registriesCount
registries(first: 20) {
nodes {
id
}
}
registryUpstreams {
id
position
}
}
pageInfo {
endCursor
startCursor
hasPreviousPage
hasNextPage
}
}
}
}
- Confirm that
virtualRegistriesPackagesMavenUpstreams&mavenVirtualRegistriesreturnnullwhen conditions are not met. - Run the query & confirm that new field
registriesCountis added formavenUpstreamRegistry.
query {
mavenUpstreamRegistry(id: "gid://gitlab/VirtualRegistries::Packages::Maven::Upstream/10") {
id
name
registriesCount <--- This field is newly added
}
}
MR acceptance checklist
Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.
Related to #525932
Edited by Rahul Chanila