class Capsium::Reactor::GraphqlSchema
Builds the GraphQL schema for a mounted package (ARCHITECTURE.md section 5): per dataset a query field “<dataset>” (list, optional “id:” argument for a single item) plus create<Dataset>/update<Dataset>/delete<Dataset> mutations. Item types are inferred from the dataset’s JSON schema when present, else map to a permissive JSON scalar. Field resolvers delegate to the given API object’s public methods.
Public Class Methods
(Mount mount, GraphqlApi api) → void
Source
# File lib/capsium/reactor/graphql_schema.rb, line 26 def initialize(mount, api) @mount = mount @api = api end
Public Instance Methods
() → singleton(GraphQL::Schema)
Source
# File lib/capsium/reactor/graphql_schema.rb, line 31 def build api = @api query_type = Class.new(GraphQL::Schema::Object) { graphql_name("Query") } mutation_type = Class.new(GraphQL::Schema::Object) { graphql_name("Mutation") } @mount.package.storage.datasets.each do |dataset| next if dataset.config.sqlite? add_dataset_fields(query_type, mutation_type, dataset, api) end Class.new(GraphQL::Schema) do query(query_type) mutation(mutation_type) end end