Skip to content
This repository was archived by the owner on Aug 16, 2024. It is now read-only.
This repository was archived by the owner on Aug 16, 2024. It is now read-only.

Question: TypeModifcation - Replace field with context #112

Description

@pLeminoq

Hello,

we have the issue, that we want to replace a field in our protobuf types depending on the context (the DateFetchingEnvironment). The use case for this is that our type contains a map of languages to labels.
We want to resolve the label as a string depending on the Accept-Language Header sent by the client and thus need the context of the request for the type modification.
As far as I understand it, if we use Type.find(...).replaceField(...) we need to implement type coercing which does not have access to the context.
Our approach was to implement two SchemaModifications:

  1. Remove the label field:
@SchemaModification
TypeModification removeMultiLanguageLabel = Type.find(....).removeField("label");
  1. Re-add the label field as a String
@SchemaModification(addField = "label", onType = ...)
String addLabel(... type, DataFetchingEnvironment env) {
    return LabelProcessor.getBestMatch(env.getContext().getLanguageCode(), type.getLabel());  
}

However, it seems we cannot guarantee the order in which the modifications are executed.

Is there a solution to this problem that we overlook?
Otherwise, would it be possible to add a parameter to the SchemaModifcation Annotation that ensures the order in which they are applied?

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