Skip to content

Conversation

ysmolski
Copy link
Contributor

@ysmolski ysmolski commented Oct 14, 2025

This version fixes "make generate" and matches
the version used in cosmo.

Closes #1091

Summary by CodeRabbit

  • New Features

    • WebSocket init now supports returning an init payload.
    • GraphQL endpoints enable POST transport and introspection.
    • Added Query/Mutation/Subscription model types and JSON (un)marshal for an enum; several fields now use omitempty.
  • Bug Fixes

    • Reduced test flakiness with small timing adjustments.
  • Tests

    • Refreshed generated mocks and codegen headers.
  • Chores

    • Upgraded Go module dependencies and updated codegen/tooling directives; removed a tooling bootstrap file.

This version fixes "make generate" and matches
the version used in cosmo.
Copy link
Contributor

coderabbitai bot commented Oct 14, 2025

Walkthrough

Dependency version bumps and tooling updates; regenerated gqlgen artifacts (headers and added root model types/JSON methods); websocket InitFunc signature change; GraphQL server construction switched to handler.New with added transports/introspection; several v2 stringer/index refactors; minor mock header updates and small test timing sleeps.

Changes

Cohort / File(s) Summary
Go module updates
examples/federation/go.mod, v2/go.mod, execution/go.mod
Bump gqlgen, gqlparser, protobuf, zap, testify, golang.org/x/* and many indirect deps; add/update tool/replace directives.
Generated gqlgen headers
.../entity.resolvers.go, .../schema.resolvers.go (multiple under examples/ and execution/)
Update generated file header comments to reflect gqlgen v0.17.76 only.
Model additions & JSON changes
execution/federationtesting/.../model/models_gen.go, examples/.../model/models_gen.go, v2/pkg/testing/subscriptiontesting/models_gen.go
Add root types (Query, Mutation, Subscription as applicable); add/adjust omitempty tags; add bytes import and JSON Marshal/Unmarshal for Which; change UnmarshalGQL param from interface{} to any.
Handler construction & transports
examples/federation/.../handler.go, execution/federationtesting/.../handler.go, pkg/testing/federationtesting/.../handler.go, v2/pkg/testing/subscriptiontesting/chat_test.go
Replace handler.NewDefaultServer(...) with handler.New(...); add srv.AddTransport(transport.POST{}); enable srv.Use(extension.Introspection{}); update imports and test server setup.
Websocket InitFunc signature updates
execution/federationtesting/products/graph/handler.go, examples/federation/products/graph/handler.go, examples/.../products/graph/handler.go
Websocket InitFunc now returns (context.Context, *transport.InitPayload, error); call sites updated to return the extra payload value.
v2 stringer/index refactors
v2/pkg/ast/ast_string.go, v2/pkg/ast/directive_location_string.go, v2/pkg/astvalidation/validation_state_string.go, v2/pkg/lexer/identkeyword/identkeyword_string.go, v2/pkg/lexer/keyword/keyword_string.go
Rework generated String() implementations to compute a local idx offset for bounds checks and slice indexing; behavior unchanged for valid inputs.
Introspection enum API
v2/pkg/introspection/introspection_enum.go
Add public method (*__TypeKind).AppendText([]byte) ([]byte, error).
Subscription mock header updates
execution/subscription/*_mock_test.go, execution/subscription/websocket/*_mock_test.go
Update GoMock Source header annotations from v2/pkg/subscriptionexecution/subscription; no functional changes.
Subscription test timing tweaks
execution/subscription/legacy_handler_test.go, execution/subscription/websocket/client_test.go
Insert small sleeps (10ms and 4ms) to allow connection/message state transitions before assertions.
Tools & generate directives
examples/federation/tools.go (deleted), examples/.../server.go, execution/.../handler.go, v2/pkg/testing/subscriptiontesting/handler.go
Remove tools.go (blank tooling imports); change go:generate lines to call go run github.com/99designs/gqlgen generate (remove -mod=mod or switch invocation).
Minor imports/nolint adjustments
Various handler.go and test files
Add/remove imports and adjust comments around blank imports or debug tracer usage; no API surface changes.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

Pre-merge checks and finishing touches

✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title Check ✅ Passed The title “chore: bump gqlgen to v0.17.76” succinctly describes the main change of updating the gqlgen dependency to version 0.17.76 without extraneous details or noise, following conventional commit style.
Linked Issues Check ✅ Passed The pull request updates the gqlgen dependency in v2/go.mod, examples/federation/go.mod, and execution/go.mod as required by issue #1091, and includes necessary compatibility adjustments in code generation, handlers, and go:generate directives to fix the “make generate” process and support the new gqlgen version.
Out of Scope Changes Check ✅ Passed All changes appear directly tied to the dependency upgrade, code generation updates for gqlgen and stringer, handler signature adjustments, test fixes, and go:generate directives necessary to align with version 0.17.76, with no unrelated features or code outside the scoped objectives.
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.
✨ Finishing touches
  • 📝 Generate docstrings

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between bdbf5f2 and a924dc8.

📒 Files selected for processing (8)
  • examples/federation/accounts/server.go (1 hunks)
  • examples/federation/products/server.go (1 hunks)
  • examples/federation/reviews/server.go (1 hunks)
  • execution/federationtesting/accounts/handler.go (1 hunks)
  • execution/federationtesting/products/handler.go (1 hunks)
  • execution/federationtesting/reviews/handler.go (1 hunks)
  • v2/pkg/testing/subscriptiontesting/handler.go (1 hunks)
  • v2/pkg/testing/subscriptiontesting/resolvers.go (1 hunks)
✅ Files skipped from review due to trivial changes (2)
  • execution/federationtesting/reviews/handler.go
  • v2/pkg/testing/subscriptiontesting/resolvers.go
🚧 Files skipped from review as they are similar to previous changes (2)
  • examples/federation/products/server.go
  • examples/federation/reviews/server.go
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: Build and test (go 1.25 / windows-latest)
  • GitHub Check: Build and test (go 1.25 / windows-latest)
🔇 Additional comments (3)
execution/federationtesting/products/handler.go (1)

1-1: LGTM! Explicit generate subcommand improves clarity.

The explicit generate subcommand is correct gqlgen usage and makes the code generation directive clearer. This aligns with the PR's objective to update and standardize gqlgen usage across the repository.

v2/pkg/testing/subscriptiontesting/handler.go (1)

1-1: LGTM — code generation and build succeed with the explicit generate subcommand.

execution/federationtesting/accounts/handler.go (1)

1-1: go:generate directive validated
gqlgen v0.17.76 generates successfully in execution/federationtesting/accounts without errors.


Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
examples/federation/go.mod (1)

69-69: Align gqlgen version pinning
examples/federation/go.mod declares require github.com/99designs/gqlgen v0.17.76 but replaces it with v0.17.22 (generated code targets v0.17.22). Either regenerate the schema and handlers with v0.17.76 and drop the replace directive, or intentionally pin both require and replace to v0.17.22 for consistency.

🧹 Nitpick comments (2)
execution/subscription/legacy_handler_test.go (1)

457-457: Consider using require.Eventually for more robust async testing.

The fixed sleep addresses the timing issue pragmatically, but polling would be more reliable across different environments.

For example, you could replace the sleep with:

-				time.Sleep(10 * time.Millisecond)
-				messagesFromServer := client.readFromServer()
+				require.Eventually(t, func() bool {
+					messagesFromServer := client.readFromServer()
+					for _, msg := range messagesFromServer {
+						if msg.Id == "1" && msg.Type == MessageTypeComplete {
+							return true
+						}
+					}
+					return false
+				}, 1*time.Second, 5*time.Millisecond)
+				messagesFromServer := client.readFromServer()

That said, the current approach is acceptable for a dependency update PR.

execution/go.mod (1)

79-83: Consider removing commented-out code.

The commented-out replace directive and its explanation can be removed now that the version conflict is resolved by upgrading gqlgen to v0.17.76.

Apply this diff to remove the obsolete comments and commented-out code:

-// cosmo/router dependency uses indirect dependency of gqlgen of version v0.17.39
-// code in this workspace uses v0.17.22
-// this is a workaround to make sure that the correct version is used
-// as we cannot pin the specific version in go mod
-//replace github.com/99designs/gqlgen => github.com/99designs/gqlgen v0.17.22
-
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 4a142a5 and 0b76e99.

⛔ Files ignored due to path filters (11)
  • examples/federation/go.sum is excluded by !**/*.sum
  • execution/federationtesting/accounts/graph/generated/federation.go is excluded by !**/generated/**
  • execution/federationtesting/accounts/graph/generated/generated.go is excluded by !**/generated/**
  • execution/federationtesting/products/graph/generated/federation.go is excluded by !**/generated/**
  • execution/federationtesting/products/graph/generated/generated.go is excluded by !**/generated/**
  • execution/federationtesting/reviews/graph/generated/federation.go is excluded by !**/generated/**
  • execution/federationtesting/reviews/graph/generated/generated.go is excluded by !**/generated/**
  • execution/go.sum is excluded by !**/*.sum
  • go.work is excluded by !**/*.work
  • go.work.sum is excluded by !**/*.sum
  • v2/go.sum is excluded by !**/*.sum
📒 Files selected for processing (26)
  • examples/federation/go.mod (3 hunks)
  • execution/federationtesting/accounts/graph/entity.resolvers.go (1 hunks)
  • execution/federationtesting/accounts/graph/model/models_gen.go (9 hunks)
  • execution/federationtesting/accounts/graph/schema.resolvers.go (1 hunks)
  • execution/federationtesting/products/graph/entity.resolvers.go (1 hunks)
  • execution/federationtesting/products/graph/handler.go (1 hunks)
  • execution/federationtesting/products/graph/model/models_gen.go (2 hunks)
  • execution/federationtesting/products/graph/schema.resolvers.go (1 hunks)
  • execution/federationtesting/reviews/graph/entity.resolvers.go (1 hunks)
  • execution/federationtesting/reviews/graph/model/models_gen.go (2 hunks)
  • execution/federationtesting/reviews/graph/schema.resolvers.go (1 hunks)
  • execution/go.mod (3 hunks)
  • execution/subscription/engine_mock_test.go (1 hunks)
  • execution/subscription/executor_mock_test.go (1 hunks)
  • execution/subscription/handler_mock_test.go (1 hunks)
  • execution/subscription/legacy_handler_test.go (1 hunks)
  • execution/subscription/transport_client_mock_test.go (1 hunks)
  • execution/subscription/websocket/engine_mock_test.go (1 hunks)
  • v2/go.mod (2 hunks)
  • v2/pkg/ast/ast_string.go (6 hunks)
  • v2/pkg/ast/directive_location_string.go (1 hunks)
  • v2/pkg/astvalidation/validation_state_string.go (1 hunks)
  • v2/pkg/introspection/introspection_enum.go (2 hunks)
  • v2/pkg/lexer/identkeyword/identkeyword_string.go (1 hunks)
  • v2/pkg/lexer/keyword/keyword_string.go (1 hunks)
  • v2/pkg/testing/subscriptiontesting/models_gen.go (1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-08-29T09:35:47.969Z
Learnt from: ysmolski
PR: wundergraph/graphql-go-tools#1282
File: v2/pkg/engine/plan/visitor.go:5-5
Timestamp: 2025-08-29T09:35:47.969Z
Learning: The wundergraph/graphql-go-tools project does not support Go versions < 1.23, so compatibility concerns for features available in Go 1.21+ (like cmp.Or) should not be raised.

Applied to files:

  • examples/federation/go.mod
  • v2/go.mod
🧬 Code graph analysis (1)
execution/federationtesting/products/graph/handler.go (1)
pkg/subscription/websocket/init.go (1)
  • InitFunc (10-10)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: Build and test (go 1.25 / windows-latest)
  • GitHub Check: Build and test (go 1.25 / ubuntu-latest)
  • GitHub Check: Build and test (go 1.25 / windows-latest)
🔇 Additional comments (21)
v2/pkg/ast/directive_location_string.go (1)

38-42: LGTM! Standard stringer-generated pattern.

The refactored indexing logic using idx := int(i) - 0 is correct and consistent with stringer's template for handling enums with arbitrary starting values. The - 0 reflects the first enum value (DirectiveLocationUnknown-0) and is parameterized in the generator template. The bounds check and slice indexing are safe, and behavior is preserved for all valid inputs.

execution/federationtesting/reviews/graph/schema.resolvers.go (1)

5-5: Header version bump confirmed

Generated file correctly reflects gqlgen v0.17.76. No further action needed.

execution/federationtesting/products/graph/schema.resolvers.go (1)

5-5: Generated header update matches gqlgen v0.17.76

Header metadata aligns with the dependency bump; everything else remains unchanged.

execution/subscription/transport_client_mock_test.go (1)

2-2: Mock Source path refreshed

Source annotation now points at execution/subscription, matching the relocated interfaces.

execution/federationtesting/reviews/graph/entity.resolvers.go (1)

5-5: Header metadata updated

Generated file now records gqlgen v0.17.76; no other adjustments required.

execution/subscription/handler_mock_test.go (1)

2-2: Source annotation aligns with new package

Mock header now references execution/subscription, which syncs with the dependency move.

execution/subscription/websocket/engine_mock_test.go (1)

2-2: Updated mock Source header

Header correctly points to execution/subscription, matching the shared interface package.

execution/federationtesting/products/graph/entity.resolvers.go (1)

5-5: Generated header reflects v0.17.76

Version tag matches the upgraded gqlgen release; no further concerns.

execution/subscription/executor_mock_test.go (1)

2-2: Mock Source path updated

Header now targets execution/subscription, aligning with the reorganized interfaces.

v2/go.mod (3)

6-6: LGTM! Core dependency upgrade aligns with PR objectives.

The gqlgen upgrade to v0.17.76 is consistent with the PR's stated goal to fix "make generate" and align with cosmo's version.


80-80: LGTM! Tool directive properly added.

The tool directive ensures gqlgen is available as a build tool, which is the correct approach for code generation.


27-40: Dependency versions are free from known advisories. Testify v1.11.1, gqlparser/v2 v2.5.30 (>2.5.14), and protobuf v1.36.9 (>1.33.0) are all past their first-patched releases.

execution/federationtesting/products/graph/model/models_gen.go (1)

5-21: LGTM! Standard GraphQL root types added.

The addition of empty Mutation, Query, and Subscription types is standard for gqlgen-generated code and aligns with the GraphQL schema structure.

execution/go.mod (2)

6-23: LGTM! Dependencies upgraded consistently.

The gqlgen upgrade to v0.17.76 and related dependency updates are consistent with the PR objectives and align with changes in other modules.


85-85: LGTM! Tool directive properly added.

The tool directive ensures gqlgen is available as a build tool, consistent with the approach in v2/go.mod.

examples/federation/go.mod (1)

6-14: LGTM! Core dependencies upgraded consistently.

The gqlgen and related dependency upgrades align with the PR objectives.

execution/federationtesting/products/graph/handler.go (1)

45-52: LGTM! Correctly adapted to new websocket InitFunc signature.

The InitFunc signature has been updated to match the new gqlgen v0.17.76 API, which now requires returning a *transport.InitPayload in addition to the context and error. The implementation correctly returns nil for the payload, which is appropriate when no custom payload processing is needed.

execution/federationtesting/accounts/graph/model/models_gen.go (4)

6-6: LGTM! Bytes import added for new JSON marshaling functionality.

The bytes package import is required for the new MarshalJSON method added to the Which enum.


105-194: LGTM! Field tags updated with omitempty directives.

The addition of omitempty tags to optional fields (Name in C and D, Wallet in Purchase, OtherInterfaces in nested types) follows Go best practices and ensures proper JSON serialization of optional fields.


163-164: LGTM! Standard GraphQL Query type added.

The empty Query struct is standard for gqlgen-generated code and aligns with the GraphQL schema structure.


338-367: LGTM! Enhanced enum serialization support.

The changes improve the Which enum:

  1. Parameter type modernized from interface{} to any (Go 1.18+)
  2. Added UnmarshalJSON and MarshalJSON methods for direct JSON serialization

These additions enable the enum to be serialized/deserialized to/from JSON in addition to GraphQL, which is useful for scenarios where the enum needs to be persisted or transmitted in JSON format.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Nitpick comments (1)
execution/subscription/websocket/client_test.go (1)

250-251: The sleep addresses the timing issue, but consider polling instead.

The 4ms sleep allows the connection state to propagate before the assertion. However, hard-coded sleeps can make tests slower than necessary and may still be insufficient on slower systems.

Consider refactoring to poll IsConnected() instead:

 assert.Eventually(t, func() bool {
     actualServerResult := <-serverResponseChan
     assert.NoError(t, actualServerResult.err)
     assert.Equal(t, ws.OpClose, actualServerResult.opCode)
     assert.Equal(t, ws.StatusCode(4400), actualServerResult.statusCode)
     assert.Equal(t, "unknown reason", actualServerResult.closeReason)
-    // Connection could be still not closed, give it time to reach the state:
-    time.Sleep(4 * time.Millisecond)
-    assert.Equal(t, false, websocketClient.IsConnected())
-    return true
+    return !websocketClient.IsConnected()
 }, 1*time.Second, 2*time.Millisecond)

This approach leverages assert.Eventually's built-in retry mechanism, making the test both faster (no unnecessary waits) and more reliable (retries until the condition is met or timeout occurs).

Also applies to: 277-278, 304-305

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 0b76e99 and 09a9bc8.

📒 Files selected for processing (1)
  • execution/subscription/websocket/client_test.go (3 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: Build and test (go 1.25 / windows-latest)
  • GitHub Check: Build and test (go 1.25 / windows-latest)

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 09a9bc8 and 0c04f56.

📒 Files selected for processing (3)
  • execution/federationtesting/accounts/graph/handler.go (1 hunks)
  • execution/federationtesting/reviews/graph/handler.go (1 hunks)
  • v2/pkg/testing/subscriptiontesting/chat_test.go (1 hunks)
✅ Files skipped from review due to trivial changes (2)
  • execution/federationtesting/accounts/graph/handler.go
  • execution/federationtesting/reviews/graph/handler.go
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: Build and test (go 1.25 / windows-latest)
  • GitHub Check: Build and test (go 1.25 / windows-latest)

@ysmolski
Copy link
Contributor Author

Now it is ready for your review.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

♻️ Duplicate comments (1)
examples/federation/reviews/graph/model/models_gen.go (1)

24-24: Same omitempty concern as line 7.

The omitempty tag addition on User.Reviews has the same API impact as the change on line 7 for Product.Reviews. Ensure consumers don't rely on this field always being present.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between ad36f98 and bdbf5f2.

⛔ Files ignored due to path filters (8)
  • examples/federation/accounts/graph/generated/federation.go is excluded by !**/generated/**
  • examples/federation/accounts/graph/generated/generated.go is excluded by !**/generated/**
  • examples/federation/go.sum is excluded by !**/*.sum
  • examples/federation/products/graph/generated/federation.go is excluded by !**/generated/**
  • examples/federation/products/graph/generated/generated.go is excluded by !**/generated/**
  • examples/federation/reviews/graph/generated/federation.go is excluded by !**/generated/**
  • examples/federation/reviews/graph/generated/generated.go is excluded by !**/generated/**
  • go.work.sum is excluded by !**/*.sum
📒 Files selected for processing (15)
  • examples/federation/accounts/graph/entity.resolvers.go (1 hunks)
  • examples/federation/accounts/graph/model/models_gen.go (1 hunks)
  • examples/federation/accounts/graph/schema.resolvers.go (1 hunks)
  • examples/federation/accounts/server.go (1 hunks)
  • examples/federation/go.mod (1 hunks)
  • examples/federation/products/graph/entity.resolvers.go (1 hunks)
  • examples/federation/products/graph/handler.go (1 hunks)
  • examples/federation/products/graph/model/models_gen.go (1 hunks)
  • examples/federation/products/graph/schema.resolvers.go (1 hunks)
  • examples/federation/products/server.go (1 hunks)
  • examples/federation/reviews/graph/entity.resolvers.go (1 hunks)
  • examples/federation/reviews/graph/model/models_gen.go (2 hunks)
  • examples/federation/reviews/server.go (1 hunks)
  • examples/federation/tools.go (0 hunks)
  • execution/go.mod (2 hunks)
💤 Files with no reviewable changes (1)
  • examples/federation/tools.go
✅ Files skipped from review due to trivial changes (3)
  • examples/federation/reviews/graph/entity.resolvers.go
  • examples/federation/products/graph/schema.resolvers.go
  • examples/federation/accounts/graph/schema.resolvers.go
🚧 Files skipped from review as they are similar to previous changes (1)
  • examples/federation/go.mod
🧰 Additional context used
🧬 Code graph analysis (2)
examples/federation/reviews/graph/model/models_gen.go (1)
examples/federation/products/graph/model/models_gen.go (2)
  • Product (5-10)
  • Product (12-12)
examples/federation/products/graph/handler.go (1)
pkg/subscription/websocket/init.go (1)
  • InitFunc (10-10)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: Build and test (go 1.25 / windows-latest)
  • GitHub Check: Build and test (go 1.25 / windows-latest)
🔇 Additional comments (6)
examples/federation/reviews/server.go (1)

1-1: LGTM! Clean simplification of the codegen directive.

Removing -mod=mod aligns with modern Go practices (Go 1.16+) where module mode is the default. This simplifies the codegen workflow without any functional impact.

examples/federation/reviews/graph/model/models_gen.go (3)

12-14: LGTM! Query root type added.

The empty Query struct is a standard GraphQL root type generated by gqlgen. The actual query resolvers would be implemented in the resolver files.


1-27: AI summary inconsistency detected.

The AI-generated summary mentions changes not visible in this file:

  • Import of bytes package
  • Which type's UnmarshalGQL parameter type change
  • JSON marshaling methods for Which type

The annotated code only shows:

  • omitempty tag additions on lines 7 and 24
  • Query struct addition on lines 12-14

These discrepancies suggest the summary may be aggregating information from multiple files or contains inaccuracies.


7-7: Verify client compatibility with omitempty behavior

The added omitempty tag will omit reviews when empty or nil instead of serializing it. Confirm that all downstream consumers handle missing reviews fields correctly.

examples/federation/products/server.go (1)

1-1: LGTM on go:generate update

Dropping -mod=mod is fine with modern Go; generation will use the version pinned in examples/federation/go.mod (v0.17.76). No further action.

examples/federation/products/graph/handler.go (1)

45-46: Minor summary mismatch

The AI summary mentions renaming the second parameter to ip; code keeps it as _. The implementation is fine; no change needed.

@ysmolski ysmolski merged commit 9227464 into master Oct 16, 2025
11 checks passed
@ysmolski ysmolski deleted the yury/eng-8313-engine-fix-make-generate branch October 16, 2025 11:47
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