Skip to content

Conversation

@ahmadbky
Copy link
Member

Split ConnectionInput into two separate types, with a new ConnectionInputBuilder, which omits the source field. A new build method is added instead, which returns a ConnectionInput, which contains a source field that is non-optional.

This allows to not have to check for a default Redis key for the QueryRoot.players and QueryRoot.maps GraphQL nodes, because it must be provided by the caller.

The types are moved into a new submodule in the utils module. The struct EitherRedisKey and the function custom_source_or are removed.

Split `ConnectionInput` into two separate types, with a new
`ConnectionInputBuilder`, which omits the `source` field. A new `build`
method is added instead, which returns a `ConnectionInput`, which
contains a `source` field that is non-optional.

This allows to not have to check for a default Redis key for the
`QueryRoot.players` and `QueryRoot.maps` GraphQL nodes, because it must
be provided by the caller.

The types are moved into a new submodule in the utils module. The struct
`EitherRedisKey` and the function `custom_source_or` are removed.
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR refactors the ConnectionInput structure by introducing a builder pattern that ensures the source field is always provided explicitly. The refactoring eliminates the need for default Redis key handling and improves type safety.

Changes:

  • Split ConnectionInput into ConnectionInputBuilder and ConnectionInput types, moving them to a new connection_input submodule
  • Made source a required parameter via the builder's build method
  • Removed helper types EitherRedisKey and custom_source_or function that handled optional source defaults

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated no comments.

Show a summary per file
File Description
crates/graphql-api/src/utils/mod.rs Adds the new connection_input module
crates/graphql-api/src/utils/connection_input.rs Defines the new ConnectionInputBuilder and ConnectionInput types with builder pattern
crates/graphql-api/src/tests/queryroot_players_connection.rs Updates test calls to use ConnectionInputBuilder with explicit build(source)
crates/graphql-api/src/tests/queryroot_maps_connection.rs Updates test calls to use ConnectionInputBuilder with explicit build(source)
crates/graphql-api/src/objects/root.rs Updates production code to use the builder pattern, removes old types and helper functions

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@ahmadbky ahmadbky merged commit 4a8a849 into master Jan 11, 2026
9 checks passed
@ahmadbky ahmadbky deleted the remove-either-redis-key branch January 11, 2026 14:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants