sling-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Bertrand Delacretaz (Jira)" <>
Subject [jira] [Commented] (SLING-9550) Support custom GraphQL Scalars
Date Fri, 26 Jun 2020 09:35:00 GMT


Bertrand Delacretaz commented on SLING-9550:

The current plan is to support something like this:

type Query {
    phraseAnalyzer (phrase : InputPhrase) : PhraseAnalysisResult @fetcher(name:"scalars/phrase")

Where the {{InputPhrase}} and {{PhraseAnalysisResult}} Scalars need to be provided as OSGi
services with an API that's TBD.

The {{@scalars}} directive might be useful to namespace the Scalar converters, to avoid collisions
of common scalar names like "Email".

> Support custom GraphQL Scalars
> ------------------------------
>                 Key: SLING-9550
>                 URL:
>             Project: Sling
>          Issue Type: Task
>          Components: GraphQL
>    Affects Versions: GraphQL Core 0.0.2
>            Reporter: Bertrand Delacretaz
>            Assignee: Bertrand Delacretaz
>            Priority: Major
> We should support [custom scalars|]
in the GraphQL Core, which is a fancy way to say "custom data types". []
has examples of those.
> After a quick brainstorm with a colleague I think we need to following:
>  * A way to provide "named type converters" that define the Scalar names and how to parse
and serialize them.
>  * A way to define "scalar namespaces" in the schemas, to avoid name collisions if multiple
Scalars with the same name are used in different applications. That's probably a directive
like the {{@fetcher}} that we already use, maybe something like {{@namespace(scalars='com.example.scalars')}}
> So far we've been able to avoid exposing the {{graphql-java}} APIs in the GraphQL Core
APIs but I'm not sure if it makes sense here, will need to explore. If our APIs expose {{graphql-java}}
APIs they should be under a {{sling.graphql.api.graphqljava}} package to make that clear.
> As an example use case we might add author name and email information to the sling-samples
website example, using a custom scalar for the email.

This message was sent by Atlassian Jira

View raw message