Skip to content

Questions regarding post-merge validation rules #147

Open
5 of 7 issues completed
Open
5 of 7 issues completed
@glen-84

Description

@glen-84

Empty Merged Object Type

No Queries

  • Covered by Empty Merged Object Type?
  • "IsExposed" – where is this defined? Is it just something like "does not have the inaccessible directive, nor does the type that it is defined on"?
    • Actually, nothing inaccessible exists in the composite schema, so this just has to look for an empty object (see previous rule).

Implemented by Inaccessible

  • "Let schema be the merged composite execution schema" – I thought that this spec is not supposed to reference the execution schema?
  • "If type is not marked with @inaccessible" – this wouldn't happen in the composite schema?
  • "If field is marked with @inaccessible" – same, this would only be applicable in an execution schema?

Interface Field No Implementation

  • "that are visible in the merged schema" – everything is visible in the merged (composite) schema, this is only not true in the execution schema?

Invalid Field Sharing

  • Could this not be implemented as a pre-merge validation rule?
    • The Subscription part could even be a source schema validation rule?

Invalid Shareable Usage

  • Could this not be implemented as a source schema validation rule?

Only Inaccessible Children

  • "If IsExposed(type) is false" – all exposed in composite (not execution) schema?
  • "If field is not marked with @inaccessible and not @internal" – there definitely won't be any internal fields in the composite schema.
  • If only inaccessible, then this rule is basically the same as the "Empty Merged Object Type" (but for other type system members as well).

Require Invalid Fields

  • parentType is used without being defined.
  • The first counter-example is syntactically invalid, so would be caught by the Require Invalid Syntax source schema validation rule.

Provides Invalid Fields

  • "If selectedField returns a composite type then selection" – huh? 🙂

Input Fields cannot reference inaccessible type

  • "If field is not declared as @inaccessible" – no concept of inaccessible in composite (not execution) schema?

General thoughts

I think that we need to clarify the separation of composite (client-facing) and execution schemas. It was my understanding that the spec would not mention the latter at all. Any rules involving @inaccessible in the merged schema don't seem applicable to this specification?

Sub-issues

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions