Separate legacy filesystem and database code paths: Catalog GET
### Summary Refactor the catalog GET handler in `registry/handlers/catalog.go` to separate the legacy filesystem code path from the database code path, as part of the effort to improve maintainability described in &20922. ### Context **Route:** `GET /v2/_catalog` **Current file:** `registry/handlers/catalog.go` **Handler method:** `HandleGetCatalog` ### Current State The handler currently uses conditional branching to switch between database and filesystem metadata backends. This creates cognitive overhead and intermingles actively developed database code with legacy filesystem code. ### Goal Separate the two code paths following the pattern established in [!2766](https://gitlab.com/gitlab-org/container-registry/-/merge_requests/2766): 1. Extract legacy filesystem logic into a dedicated method in a `legacy_*.go` file 2. Main handler method contains only database logic 3. Backend selection occurs at the dispatcher level ### Acceptance Criteria - [ ] Legacy filesystem logic isolated in `legacy_catalog.go` - [ ] Main handler contains only database logic - [ ] Dispatcher selects appropriate handler based on backend configuration - [ ] API conformance tests pass for both database and legacy configurations ### Related - Parent epic: &20922 - Proof of concept: [!2766](https://gitlab.com/gitlab-org/container-registry/-/merge_requests/2766)
issue