[go: up one dir, main page]

Skip to content

Add sorting options and count to Maven virtual registries

🛠️ What does this MR do and why?

Currently, users can only use Maven virtual registry via API but not UI.

To be able to build the UI, we need to add sorting options for MavenVirtualRegistryType.

In this MR, we:

  • Add sort argument and accept 4 options to sort the results.
    • 4 options: UPDATED_DESC, UPDATED_ASC, NAME_DESC, NAME_ASC
  • Expose count field

🗄️ Database migrations

⬆️ Migration up

gdk rails db:migrate:main                    ok | 23s | system node
main: == [advisory_lock_connection] object_id: 147260, pg_backend_pid: 28880
main: == 20250812103704 AddIndexVirtualRegistriesPackagesMavenRegistryOnGroupIdAndUpdatedAt: migrating
main: -- transaction_open?(nil)
main:    -> 0.0000s
main: -- view_exists?(:postgres_partitions)
main:    -> 0.0178s
main: -- index_exists?(:virtual_registries_packages_maven_registries, [:group_id, :updated_at], {:name=>:index_virtual_reg_pkgs_mvn_reg_on_group_id_and_updated_at, :algorithm=>:concurrently})
main:    -> 0.0018s
main: -- execute("SET statement_timeout TO 0")
main:    -> 0.0003s
main: -- add_index(:virtual_registries_packages_maven_registries, [:group_id, :updated_at], {:name=>:index_virtual_reg_pkgs_mvn_reg_on_group_id_and_updated_at, :algorithm=>:concurrently})
main:    -> 0.0031s
main: -- execute("RESET statement_timeout")
main:    -> 0.0004s
main: == 20250812103704 AddIndexVirtualRegistriesPackagesMavenRegistryOnGroupIdAndUpdatedAt: migrated (0.0380s)

main: == [advisory_lock_connection] object_id: 147260, pg_backend_pid: 28880

⬇️ Migration down

gdk rails db:migrate:down:main VERSION=20250812103704
main: == [advisory_lock_connection] object_id: 147740, pg_backend_pid: 28074
main: == 20250812103704 AddIndexVirtualRegistriesPackagesMavenRegistryOnGroupIdAndUpdatedAt: reverting
main: -- transaction_open?(nil)
main:    -> 0.0000s
main: -- view_exists?(:postgres_partitions)
main:    -> 0.0263s
main: -- indexes(:virtual_registries_packages_maven_registries)
main:    -> 0.0031s
main: -- execute("SET statement_timeout TO 0")
main:    -> 0.0003s
main: -- remove_index(:virtual_registries_packages_maven_registries, {:algorithm=>:concurrently, :name=>:index_virtual_reg_pkgs_mvn_reg_on_group_id_and_updated_at})
main:    -> 0.0018s
main: -- execute("RESET statement_timeout")
main:    -> 0.0003s
main: == 20250812103704 AddIndexVirtualRegistriesPackagesMavenRegistryOnGroupIdAndUpdatedAt: reverted (0.0464s)

main: == [advisory_lock_connection] object_id: 147740, pg_backend_pid: 28074

References

Screenshots or screen recordings

N/A

How to set up and validate locally

  1. Switch to this branch 535634-virtual-registry-sorting-option
  2. Run migration
    gdk rails db:migrate:main
  3. Open another terminal and setup GROUP_ID, GITLAB_URL and TOKEN
  4. Create Maven virtual registry under the group, you can change the name and create the second one for later test
    curl --request POST \    
         --header "PRIVATE-TOKEN: ${TOKEN}" \
         --header "Content-Type: application/json" \
         --header "Accept: application/json" \
         --data '{"name": "test-virtual-registry-2", "description": "Test virtual registry 2"}' \
         --url "${GITLAB_URL}/api/v4/groups/${GROUP_ID}/-/virtual_registries/packages/maven/registries"
  5. Go to GraphQL UI: http://gdk.test:3000/-/graphql-explorer
    query {
      group(fullPath: "gitlab-org") {
        mavenVirtualRegistries(sort: NAME_DESC, first: 1) {
          count
          nodes {
            id
            name
          }
        }
      }
    }

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 #535634

Merge request reports

Loading