Add VirtualRegistries::Container::RegistryUpstream.registries_count_by_upstream_ids method

What does this MR do and why?

This MR is the preparation for the work of Get a list of the container virtual registry up... (#580492) • Sylvia Shen • 18.7

For VirtualRegistries, we have VirtualRegistries::RegistryUpstream model to have shared methods there, this MR does 2 things:

  1. Adds a new class method registries_count_by_upstream_ids to VirtualRegistries::RegistryUpstream, it will be used in the next MR when we add Container::UpstreamType in GraphQL

  2. Extract shared example registry upstream registries count, use it in VirtualRegistries::Container::RegistryUpstream and VirtualRegistries::Packages::Maven::RegistryUpstream spec.

🪣 Database

Get registries count by upstream

Raw query

SELECT
    COUNT(*) AS "count_all",
    "virtual_registries_container_registry_upstreams"."upstream_id" AS "virtual_registries_container_registry_upstreams_upstream_id"
FROM
    "virtual_registries_container_registry_upstreams"
WHERE
    "virtual_registries_container_registry_upstreams"."upstream_id" = 2
GROUP BY
    "virtual_registries_container_registry_upstreams"."upstream_id"

Query plan: https://console.postgres.ai/gitlab/gitlab-production-main/sessions/45927/commands/140514

References

N/A

Screenshots or screen recordings

N/A

How to set up and validate locally

  1. Switch to this branch 580492-add-graphql-container-virtual-registry-extract-registry-count
  2. Enter rails console
    gdk rails c
  3. Create upstream registry
    registry_upstream = FactoryBot.create(:virtual_registries_container_registry_upstream)
  4. Test the method
    VirtualRegistries::Container::RegistryUpstream.registries_count_by_upstream_ids([registry_upstream.upstream_id])
    => {4=>1}

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

Edited by Sylvia Shen

Merge request reports

Loading