class Capsium::Reactor::GraphqlApi
GraphQL over a mount’s datasets (POST and GET <mount>/graphql): executes the schema GraphqlSchema derives from the package’s storage and maps the overlay’s typed errors into the “errors” array (never a 500 on user error). Query fields read the merged collection; mutations match the REST semantics, schema validation included.
Constants
- PATH
Public Class Methods
(Mount mount) → void
Source
# File lib/capsium/reactor/graphql_api.rb, line 23 def initialize(mount) @mount = mount @schema = GraphqlSchema.new(mount, self).build end
(String inner_path) → bool
Source
# File lib/capsium/reactor/graphql_api.rb, line 19 def self.path?(inner_path) inner_path == PATH end
Public Instance Methods
(Package::Dataset dataset, ?id: String? id) → Array[untyped]
Source
# File lib/capsium/reactor/graphql_api.rb, line 38 def collection(dataset, id: nil) return @mount.overlay.items(dataset) if id.nil? [@mount.overlay.item(dataset, id)] rescue Overlay::Error => e raise execution_error(e) end
Query/mutation resolvers (public; called from the derived schema’s fields).
(Package::Dataset dataset, item: untyped item) → untyped
Source
# File lib/capsium/reactor/graphql_api.rb, line 46 def create_item(dataset, item:) ensure_writable! @mount.overlay.append_item(dataset, item) item rescue Overlay::Error => e raise execution_error(e) end
(untyped request, untyped response) → untyped
Source
# File lib/capsium/reactor/graphql_api.rb, line 28 def handle(request, response) case request.request_method when "POST" then handle_post(request, response) when "GET" then handle_get(request, response) else respond_method_not_allowed(response) end end
(Package::Dataset dataset, id: String id) → bool
Source
# File lib/capsium/reactor/graphql_api.rb, line 62 def remove_item(dataset, id:) ensure_writable! @mount.overlay.delete_item(dataset, id) true rescue Overlay::Error => e raise execution_error(e) end
(Package::Dataset dataset, id: String id, item: untyped item) → untyped
Source
# File lib/capsium/reactor/graphql_api.rb, line 54 def update_item(dataset, id:, item:) ensure_writable! @mount.overlay.replace_item(dataset, id, item) item rescue Overlay::Error => e raise execution_error(e) end