agent_patch
runs/2026-02-21__03-36-16__gpt-5-1-codex-mini/flux-pr-1268/flux-pr-1268.1-of-1.2026-03-05__17-48-26__gpt-5-1-codex-mini/agent-logs/agent.patch
21681 bytes
diff --git a/tmp/agent-patch-flux-pr-1268.1-of-1.2026-03-05__17-48-26__gpt-5-1-codex-mini/app/v2/pkg/engine/datasource/graphql_datasource/graphql_datasource.go b/app/v2/pkg/engine/datasource/graphql_datasource/graphql_datasource.go
index 316e2fc..e915c06 100644
--- a/tmp/agent-patch-flux-pr-1268.1-of-1.2026-03-05__17-48-26__gpt-5-1-codex-mini/app/v2/pkg/engine/datasource/graphql_datasource/graphql_datasource.go
+++ b/app/v2/pkg/engine/datasource/graphql_datasource/graphql_datasource.go
@@ -269,14 +269,6 @@ func (p *Planner[T]) DownstreamResponseFieldAlias(downstreamFieldRef int) (alias
return "", false
}
-func (p *Planner[T]) DataSourcePlanningBehavior() plan.DataSourcePlanningBehavior {
- return plan.DataSourcePlanningBehavior{
- MergeAliasedRootNodes: true,
- OverrideFieldPathFromAlias: true,
- IncludeTypeNameFields: true,
- }
-}
-
func (p *Planner[T]) Register(visitor *plan.Visitor, configuration plan.DataSourceConfiguration[T], dataSourcePlannerConfiguration plan.DataSourcePlannerConfiguration) error {
p.visitor = visitor
@@ -1825,6 +1817,22 @@ func (f *Factory[T]) UpstreamSchema(dataSourceConfig plan.DataSourceConfiguratio
return schema, true
}
+func (f *Factory[T]) PlanningBehavior() plan.DataSourcePlanningBehavior {
+ behavior := plan.DataSourcePlanningBehavior{
+ MergeAliasedRootNodes: true,
+ OverrideFieldPathFromAlias: true,
+ PlanTypeNameFields: true,
+ }
+ if f.isGRPC() {
+ behavior.FlattenInlineFragments = true
+ }
+ return behavior
+}
+
+func (f *Factory[T]) isGRPC() bool {
+ return f.grpcClient != nil || f.grpcClientProvider != nil
+}
+
type Source struct {
httpClient *http.Client
}
diff --git a/tmp/agent-patch-flux-pr-1268.1-of-1.2026-03-05__17-48-26__gpt-5-1-codex-mini/app/v2/pkg/engine/datasource/introspection_datasource/factory.go b/app/v2/pkg/engine/datasource/introspection_datasource/factory.go
index a251521..95cda48 100644
--- a/tmp/agent-patch-flux-pr-1268.1-of-1.2026-03-05__17-48-26__gpt-5-1-codex-mini/app/v2/pkg/engine/datasource/introspection_datasource/factory.go
+++ b/app/v2/pkg/engine/datasource/introspection_datasource/factory.go
@@ -29,3 +29,11 @@ func (f *Factory[T]) Context() context.Context {
func (f *Factory[T]) UpstreamSchema(dataSourceConfig plan.DataSourceConfiguration[T]) (*ast.Document, bool) {
return nil, false
}
+
+func (f *Factory[T]) PlanningBehavior() plan.DataSourcePlanningBehavior {
+ return plan.DataSourcePlanningBehavior{
+ MergeAliasedRootNodes: false,
+ OverrideFieldPathFromAlias: true,
+ PlanTypeNameFields: true,
+ }
+}
diff --git a/tmp/agent-patch-flux-pr-1268.1-of-1.2026-03-05__17-48-26__gpt-5-1-codex-mini/app/v2/pkg/engine/datasource/introspection_datasource/planner.go b/app/v2/pkg/engine/datasource/introspection_datasource/planner.go
index 2b05800..481dc3c 100644
--- a/tmp/agent-patch-flux-pr-1268.1-of-1.2026-03-05__17-48-26__gpt-5-1-codex-mini/app/v2/pkg/engine/datasource/introspection_datasource/planner.go
+++ b/app/v2/pkg/engine/datasource/introspection_datasource/planner.go
@@ -45,14 +45,6 @@ func (p *Planner[T]) DownstreamResponseFieldAlias(_ int) (alias string, exists b
return
}
-func (p *Planner[T]) DataSourcePlanningBehavior() plan.DataSourcePlanningBehavior {
- return plan.DataSourcePlanningBehavior{
- MergeAliasedRootNodes: false,
- OverrideFieldPathFromAlias: true,
- IncludeTypeNameFields: true,
- }
-}
-
func (p *Planner[T]) EnterField(ref int) {
fieldName := p.v.Operation.FieldNameString(ref)
fieldAliasOrName := p.v.Operation.FieldAliasOrNameString(ref)
diff --git a/tmp/agent-patch-flux-pr-1268.1-of-1.2026-03-05__17-48-26__gpt-5-1-codex-mini/app/v2/pkg/engine/datasource/pubsub_datasource/pubsub_datasource.go b/app/v2/pkg/engine/datasource/pubsub_datasource/pubsub_datasource.go
index 60faa27..ace6382 100644
--- a/tmp/agent-patch-flux-pr-1268.1-of-1.2026-03-05__17-48-26__gpt-5-1-codex-mini/app/v2/pkg/engine/datasource/pubsub_datasource/pubsub_datasource.go
+++ b/app/v2/pkg/engine/datasource/pubsub_datasource/pubsub_datasource.go
@@ -275,14 +275,6 @@ func (p *Planner[T]) ConfigureSubscription() plan.SubscriptionConfiguration {
return plan.SubscriptionConfiguration{}
}
-func (p *Planner[T]) DataSourcePlanningBehavior() plan.DataSourcePlanningBehavior {
- return plan.DataSourcePlanningBehavior{
- MergeAliasedRootNodes: false,
- OverrideFieldPathFromAlias: false,
- IncludeTypeNameFields: true,
- }
-}
-
func (p *Planner[T]) DownstreamResponseFieldAlias(_ int) (alias string, exists bool) {
return "", false
}
@@ -316,6 +308,14 @@ func (f *Factory[T]) UpstreamSchema(dataSourceConfig plan.DataSourceConfiguratio
return nil, false
}
+func (f *Factory[T]) PlanningBehavior() plan.DataSourcePlanningBehavior {
+ return plan.DataSourcePlanningBehavior{
+ MergeAliasedRootNodes: false,
+ OverrideFieldPathFromAlias: false,
+ PlanTypeNameFields: true,
+ }
+}
+
func buildEventDataBytes(ref int, visitor *plan.Visitor, variables *resolve.Variables) ([]byte, error) {
// Collect the field arguments for fetch based operations
fieldArgs := visitor.Operation.FieldArguments(ref)
diff --git a/tmp/agent-patch-flux-pr-1268.1-of-1.2026-03-05__17-48-26__gpt-5-1-codex-mini/app/v2/pkg/engine/datasource/staticdatasource/static_datasource.go b/app/v2/pkg/engine/datasource/staticdatasource/static_datasource.go
index 3449afb..59c3aa5 100644
--- a/tmp/agent-patch-flux-pr-1268.1-of-1.2026-03-05__17-48-26__gpt-5-1-codex-mini/app/v2/pkg/engine/datasource/staticdatasource/static_datasource.go
+++ b/app/v2/pkg/engine/datasource/staticdatasource/static_datasource.go
@@ -30,6 +30,13 @@ func (f *Factory[T]) UpstreamSchema(dataSourceConfig plan.DataSourceConfiguratio
return nil, false
}
+func (f *Factory[T]) PlanningBehavior() plan.DataSourcePlanningBehavior {
+ return plan.DataSourcePlanningBehavior{
+ MergeAliasedRootNodes: false,
+ OverrideFieldPathFromAlias: false,
+ }
+}
+
type Planner[T Configuration] struct {
id int
config Configuration
@@ -48,13 +55,6 @@ func (p *Planner[T]) DownstreamResponseFieldAlias(downstreamFieldRef int) (alias
return
}
-func (p *Planner[T]) DataSourcePlanningBehavior() plan.DataSourcePlanningBehavior {
- return plan.DataSourcePlanningBehavior{
- MergeAliasedRootNodes: false,
- OverrideFieldPathFromAlias: false,
- }
-}
-
func (p *Planner[T]) Register(_ *plan.Visitor, configuration plan.DataSourceConfiguration[T], _ plan.DataSourcePlannerConfiguration) error {
p.config = Configuration(configuration.CustomConfiguration())
return nil
diff --git a/tmp/agent-patch-flux-pr-1268.1-of-1.2026-03-05__17-48-26__gpt-5-1-codex-mini/app/v2/pkg/engine/plan/abstract_selection_rewriter.go b/app/v2/pkg/engine/plan/abstract_selection_rewriter.go
index 284ad42..4f69b57 100644
--- a/tmp/agent-patch-flux-pr-1268.1-of-1.2026-03-05__17-48-26__gpt-5-1-codex-mini/app/v2/pkg/engine/plan/abstract_selection_rewriter.go
+++ b/app/v2/pkg/engine/plan/abstract_selection_rewriter.go
@@ -58,11 +58,11 @@ In this case if any of rules 1-3 are not satisfied we have to rewrite this fragm
}
*/
type fieldSelectionRewriter struct {
- operation *ast.Document
- definition *ast.Document
-
+ operation *ast.Document
+ definition *ast.Document
upstreamDefinition *ast.Document
dsConfiguration DataSource
+ planningBehavior DataSourcePlanningBehavior
skipFieldRefs []int
}
@@ -74,19 +74,19 @@ type RewriteResult struct {
var resultNotRewritten = RewriteResult{}
-func newFieldSelectionRewriter(operation *ast.Document, definition *ast.Document) *fieldSelectionRewriter {
- return &fieldSelectionRewriter{
- operation: operation,
- definition: definition,
+func newFieldSelectionRewriter(operation *ast.Document, definition *ast.Document, upstreamDefinition *ast.Document, dsConfiguration DataSource) *fieldSelectionRewriter {
+ planningBehavior := DataSourcePlanningBehavior{}
+ if dsConfiguration != nil {
+ planningBehavior = dsConfiguration.DataSourcePlanningBehavior()
}
-}
-
-func (r *fieldSelectionRewriter) SetUpstreamDefinition(upstreamDefinition *ast.Document) {
- r.upstreamDefinition = upstreamDefinition
-}
-func (r *fieldSelectionRewriter) SetDatasourceConfiguration(dsConfiguration DataSource) {
- r.dsConfiguration = dsConfiguration
+ return &fieldSelectionRewriter{
+ operation: operation,
+ definition: definition,
+ upstreamDefinition: upstreamDefinition,
+ dsConfiguration: dsConfiguration,
+ planningBehavior: planningBehavior,
+ }
}
func (r *fieldSelectionRewriter) RewriteFieldSelection(fieldRef int, enclosingNode ast.Node) (res RewriteResult, err error) {
@@ -169,6 +169,10 @@ func (r *fieldSelectionRewriter) processUnionSelection(fieldRef int, unionDefRef
}
func (r *fieldSelectionRewriter) unionFieldSelectionNeedsRewrite(selectionSetInfo selectionSetInfo, unionTypeNames, entityNames []string) (needRewrite bool) {
+ if r.planningBehavior.FlattenInlineFragments && selectionSetInfo.hasInlineFragments() {
+ return true
+ }
+
if selectionSetInfo.hasInlineFragmentsOnObjects {
// when we have types not exists in the current datasource - we need to rewrite
if r.objectFragmentsRequiresCleanup(selectionSetInfo.inlineFragmentsOnObjects, unionTypeNames) {
@@ -412,6 +416,10 @@ func (r *fieldSelectionRewriter) processInterfaceSelection(fieldRef int, interfa
}
func (r *fieldSelectionRewriter) interfaceFieldSelectionNeedsRewrite(selectionSetInfo selectionSetInfo, interfaceTypeNames []string, entityNames []string) (needRewrite bool) {
+ if r.planningBehavior.FlattenInlineFragments && selectionSetInfo.hasInlineFragments() {
+ return true
+ }
+
// when we do not have fragments
if !selectionSetInfo.hasInlineFragmentsOnInterfaces &&
!selectionSetInfo.hasInlineFragmentsOnUnions &&
diff --git a/tmp/agent-patch-flux-pr-1268.1-of-1.2026-03-05__17-48-26__gpt-5-1-codex-mini/app/v2/pkg/engine/plan/abstract_selection_rewriter_info.go b/app/v2/pkg/engine/plan/abstract_selection_rewriter_info.go
index 950ccb0..2491aa7 100644
--- a/tmp/agent-patch-flux-pr-1268.1-of-1.2026-03-05__17-48-26__gpt-5-1-codex-mini/app/v2/pkg/engine/plan/abstract_selection_rewriter_info.go
+++ b/app/v2/pkg/engine/plan/abstract_selection_rewriter_info.go
@@ -20,6 +20,10 @@ type selectionSetInfo struct {
hasInlineFragmentsOnUnions bool
}
+func (s selectionSetInfo) hasInlineFragments() bool {
+ return s.hasInlineFragmentsOnInterfaces || s.hasInlineFragmentsOnUnions || s.hasInlineFragmentsOnObjects
+}
+
type fieldSelection struct {
fieldSelectionRef int
fieldName string
diff --git a/tmp/agent-patch-flux-pr-1268.1-of-1.2026-03-05__17-48-26__gpt-5-1-codex-mini/app/v2/pkg/engine/plan/abstract_selection_rewriter_test.go b/app/v2/pkg/engine/plan/abstract_selection_rewriter_test.go
index 11b5fc8..2308fc1 100644
--- a/tmp/agent-patch-flux-pr-1268.1-of-1.2026-03-05__17-48-26__gpt-5-1-codex-mini/app/v2/pkg/engine/plan/abstract_selection_rewriter_test.go
+++ b/app/v2/pkg/engine/plan/abstract_selection_rewriter_test.go
@@ -49,9 +49,7 @@ func TestInterfaceSelectionRewriter_RewriteOperation(t *testing.T) {
node, _ := def.Index.FirstNodeByNameStr(testCase.enclosingTypeName)
- rewriter := newFieldSelectionRewriter(&op, &def)
- rewriter.SetUpstreamDefinition(&upstreamDef)
- rewriter.SetDatasourceConfiguration(testCase.dsConfiguration)
+ rewriter := newFieldSelectionRewriter(&op, &def, &upstreamDef, testCase.dsConfiguration)
result, err := rewriter.RewriteFieldSelection(fieldRef, node)
require.NoError(t, err)
diff --git a/tmp/agent-patch-flux-pr-1268.1-of-1.2026-03-05__17-48-26__gpt-5-1-codex-mini/app/v2/pkg/engine/plan/datasource_configuration.go b/app/v2/pkg/engine/plan/datasource_configuration.go
index 07ec63e..67d6486 100644
--- a/tmp/agent-patch-flux-pr-1268.1-of-1.2026-03-05__17-48-26__gpt-5-1-codex-mini/app/v2/pkg/engine/plan/datasource_configuration.go
+++ b/app/v2/pkg/engine/plan/datasource_configuration.go
@@ -20,6 +20,8 @@ type DSHash uint64
type PlannerFactory[DataSourceSpecificConfiguration any] interface {
// Planner creates a new DataSourcePlanner
Planner(logger abstractlogger.Logger) DataSourcePlanner[DataSourceSpecificConfiguration]
+ // PlanningBehavior describes the static planning behavior of datasources created by this factory
+ PlanningBehavior() DataSourcePlanningBehavior
// Context returns the execution context of the factory
// For stateful datasources, the factory should contain cancellable global execution context
// This method serves as a flag that factory should have a context
@@ -213,6 +215,7 @@ type dataSourceConfiguration[T any] struct {
custom T // custom is the datasource specific configuration
hash DSHash // hash is a unique hash for the dataSourceConfiguration used to match datasources
+ planningBehavior DataSourcePlanningBehavior
}
func NewDataSourceConfiguration[T any](id string, factory PlannerFactory[T], metadata *DataSourceMetadata, customConfig T) (DataSourceConfiguration[T], error) {
@@ -237,6 +240,7 @@ func NewDataSourceConfigurationWithName[T any](id string, name string, factory P
factory: factory,
custom: customConfig,
hash: DSHash(xxhash.Sum64([]byte(id))),
+ planningBehavior: factory.PlanningBehavior(),
}, nil
}
@@ -257,6 +261,7 @@ type DataSource interface {
Id() string
Name() string
Hash() DSHash
+ DataSourcePlanningBehavior() DataSourcePlanningBehavior
FederationConfiguration() FederationMetaData
CreatePlannerConfiguration(logger abstractlogger.Logger, fetchConfig *objectFetchConfiguration, pathConfig *plannerPathsConfiguration, configuration *Configuration) PlannerConfiguration
}
@@ -303,6 +308,10 @@ func (d *dataSourceConfiguration[T]) Hash() DSHash {
return d.hash
}
+func (d *dataSourceConfiguration[T]) DataSourcePlanningBehavior() DataSourcePlanningBehavior {
+ return d.planningBehavior
+}
+
type DataSourcePlannerConfiguration struct {
RequiredFields FederationFieldConfigurations
ParentPath string
@@ -383,8 +392,10 @@ type DataSourcePlanningBehavior struct {
// When true expected response will be { "rootField": ..., "alias": ... }
// When false expected response will be { "rootField": ..., "original": ... }
OverrideFieldPathFromAlias bool
- // IncludeTypeNameFields should be set to true if the planner allows to plan __typename fields
- IncludeTypeNameFields bool
+ // PlanTypeNameFields should be set to true if the planner allows to plan __typename fields
+ PlanTypeNameFields bool
+ // FlattenInlineFragments should be set to true if the planner requires inline fragments to be unconditionally flattened.
+ FlattenInlineFragments bool
}
type DataSourceFetchPlanner interface {
@@ -392,8 +403,14 @@ type DataSourceFetchPlanner interface {
ConfigureSubscription() SubscriptionConfiguration
}
-type DataSourceBehavior interface {
- DataSourcePlanningBehavior() DataSourcePlanningBehavior
+type Identifyable interface {
+ astvisitor.VisitorIdentifier
+}
+
+type DataSourcePlanner[T any] interface {
+ DataSourceFetchPlanner
+ Identifyable
+ Register(visitor *Visitor, configuration DataSourceConfiguration[T], dataSourcePlannerConfiguration DataSourcePlannerConfiguration) error
// DownstreamResponseFieldAlias allows the DataSourcePlanner to overwrite the response path with an alias
// It's required to set OverrideFieldPathFromAlias to true
// This function is useful in the following scenario
@@ -418,17 +435,6 @@ type DataSourceBehavior interface {
DownstreamResponseFieldAlias(downstreamFieldRef int) (alias string, exists bool)
}
-type Identifyable interface {
- astvisitor.VisitorIdentifier
-}
-
-type DataSourcePlanner[T any] interface {
- DataSourceFetchPlanner
- DataSourceBehavior
- Identifyable
- Register(visitor *Visitor, configuration DataSourceConfiguration[T], dataSourcePlannerConfiguration DataSourcePlannerConfiguration) error
-}
-
type SubscriptionConfiguration struct {
Input string
Variables resolve.Variables
diff --git a/tmp/agent-patch-flux-pr-1268.1-of-1.2026-03-05__17-48-26__gpt-5-1-codex-mini/app/v2/pkg/engine/plan/datasource_filter_visitor_test.go b/app/v2/pkg/engine/plan/datasource_filter_visitor_test.go
index acf02a9..4e066d1 100644
--- a/tmp/agent-patch-flux-pr-1268.1-of-1.2026-03-05__17-48-26__gpt-5-1-codex-mini/app/v2/pkg/engine/plan/datasource_filter_visitor_test.go
+++ b/app/v2/pkg/engine/plan/datasource_filter_visitor_test.go
@@ -88,6 +88,9 @@ func (b *dsBuilder) DS() DataSource {
if err := b.ds.DataSourceMetadata.Init(); err != nil {
panic(err)
}
+ if b.behavior != nil {
+ b.ds.planningBehavior = *b.behavior
+ }
return b.ds
}
diff --git a/tmp/agent-patch-flux-pr-1268.1-of-1.2026-03-05__17-48-26__gpt-5-1-codex-mini/app/v2/pkg/engine/plan/node_selection_visitor.go b/app/v2/pkg/engine/plan/node_selection_visitor.go
index 95c4f01..bdd73d3 100644
--- a/tmp/agent-patch-flux-pr-1268.1-of-1.2026-03-05__17-48-26__gpt-5-1-codex-mini/app/v2/pkg/engine/plan/node_selection_visitor.go
+++ b/app/v2/pkg/engine/plan/node_selection_visitor.go
@@ -649,9 +649,7 @@ func (c *nodeSelectionVisitor) rewriteSelectionSetHavingAbstractFragments(fieldR
return
}
- rewriter := newFieldSelectionRewriter(c.operation, c.definition)
- rewriter.SetUpstreamDefinition(upstreamSchema)
- rewriter.SetDatasourceConfiguration(ds)
+ rewriter := newFieldSelectionRewriter(c.operation, c.definition, upstreamSchema, ds)
result, err := rewriter.RewriteFieldSelection(fieldRef, c.walker.EnclosingTypeDefinition)
if err != nil {
diff --git a/tmp/agent-patch-flux-pr-1268.1-of-1.2026-03-05__17-48-26__gpt-5-1-codex-mini/app/v2/pkg/engine/plan/path_builder_visitor.go b/app/v2/pkg/engine/plan/path_builder_visitor.go
index bd4d6b2..b828089 100644
--- a/tmp/agent-patch-flux-pr-1268.1-of-1.2026-03-05__17-48-26__gpt-5-1-codex-mini/app/v2/pkg/engine/plan/path_builder_visitor.go
+++ b/app/v2/pkg/engine/plan/path_builder_visitor.go
@@ -1247,7 +1247,7 @@ func (c *pathBuilderVisitor) addPlannerPathForTypename(
if fieldName != typeNameField {
return false
}
- if !planningBehaviour.IncludeTypeNameFields {
+ if !planningBehaviour.PlanTypeNameFields {
return false
}
diff --git a/tmp/agent-patch-flux-pr-1268.1-of-1.2026-03-05__17-48-26__gpt-5-1-codex-mini/app/v2/pkg/engine/plan/planner_configuration.go b/app/v2/pkg/engine/plan/planner_configuration.go
index 69e23e8..9b22e23 100644
--- a/tmp/agent-patch-flux-pr-1268.1-of-1.2026-03-05__17-48-26__gpt-5-1-codex-mini/app/v2/pkg/engine/plan/planner_configuration.go
+++ b/app/v2/pkg/engine/plan/planner_configuration.go
@@ -23,9 +23,22 @@ type plannerConfigurationOptions struct {
}
type PlannerConfiguration interface {
- DataSourceBehavior
PlannerPathConfiguration
+ DataSourcePlanningBehavior() DataSourcePlanningBehavior
+ // DownstreamResponseFieldAlias allows the DataSourcePlanner to overwrite the response path with an alias
+ // It's required to set OverrideFieldPathFromAlias to true
+ // Example:
+ //
+ // type Query {
+ // country: Country
+ // countryAlias: Country
+ // }
+ //
+ // The DataSourcePlanner could keep track that it rewrites the upstream query and use DownstreamResponseFieldAlias
+ // to indicate to the Planner to expect the response for countryAlias on the path "countryAlias" instead of "country".
+ DownstreamResponseFieldAlias(downstreamFieldRef int) (alias string, exists bool)
+
ObjectFetchConfiguration() *objectFetchConfiguration
DataSourceConfiguration() DataSource
@@ -63,7 +76,7 @@ func (p *plannerConfiguration[T]) ObjectFetchConfiguration() *objectFetchConfigu
}
func (p *plannerConfiguration[T]) DataSourcePlanningBehavior() DataSourcePlanningBehavior {
- return p.planner.DataSourcePlanningBehavior()
+ return p.dataSourceConfiguration.DataSourcePlanningBehavior()
}
func (p *plannerConfiguration[T]) DownstreamResponseFieldAlias(downstreamFieldRef int) (alias string, exists bool) {
diff --git a/tmp/agent-patch-flux-pr-1268.1-of-1.2026-03-05__17-48-26__gpt-5-1-codex-mini/app/v2/pkg/engine/plan/planner_test.go b/app/v2/pkg/engine/plan/planner_test.go
index 0a498ad..88ddabb 100644
--- a/tmp/agent-patch-flux-pr-1268.1-of-1.2026-03-05__17-48-26__gpt-5-1-codex-mini/app/v2/pkg/engine/plan/planner_test.go
+++ b/app/v2/pkg/engine/plan/planner_test.go
@@ -1006,7 +1006,6 @@ func (f *FakeFactory[T]) Planner(logger abstractlogger.Logger) DataSourcePlanner
return &FakePlanner[T]{
source: source,
upstreamSchema: f.upstreamSchema,
- behavior: f.behavior,
}
}
@@ -1014,11 +1013,21 @@ func (f *FakeFactory[T]) Context() context.Context {
return context.TODO()
}
+func (f *FakeFactory[T]) PlanningBehavior() DataSourcePlanningBehavior {
+ if f.behavior == nil {
+ return DataSourcePlanningBehavior{
+ MergeAliasedRootNodes: false,
+ OverrideFieldPathFromAlias: false,
+ }
+ }
+
+ return *f.behavior
+}
+
type FakePlanner[T any] struct {
id int
source *StatefulSource
upstreamSchema *ast.Document
- behavior *DataSourcePlanningBehavior
}
func (f *FakePlanner[T]) ID() int {
@@ -1050,17 +1059,6 @@ func (f *FakePlanner[T]) ConfigureSubscription() SubscriptionConfiguration {
return SubscriptionConfiguration{}
}
-func (f *FakePlanner[T]) DataSourcePlanningBehavior() DataSourcePlanningBehavior {
- if f.behavior == nil {
- return DataSourcePlanningBehavior{
- MergeAliasedRootNodes: false,
- OverrideFieldPathFromAlias: false,
- }
- }
-
- return *f.behavior
-}
-
func (f *FakePlanner[T]) DownstreamResponseFieldAlias(downstreamFieldRef int) (alias string, exists bool) {
return
}