module Graphiti::Resource::Configuration
Constants
- DEFAULT_MAX_PAGE_SIZE
Attributes
config[W]
Public Class Methods
inherited(klass)
click to toggle source
Calls superclass method
# File lib/graphiti/resource/configuration.rb, line 102 def self.inherited(klass) super klass.config = Util::Hash.deep_dup(config) klass.adapter ||= Adapters::Abstract klass.max_page_size ||= DEFAULT_MAX_PAGE_SIZE # re-assigning causes a new Class.new klass.serializer = (klass.serializer || klass.infer_serializer_superclass) klass.type ||= klass.infer_type klass.graphql_entrypoint = klass.type.to_s.pluralize.to_sym default(klass, :attributes_readable_by_default, true) default(klass, :attributes_writable_by_default, true) default(klass, :attributes_sortable_by_default, true) default(klass, :attributes_filterable_by_default, true) default(klass, :attributes_schema_by_default, true) default(klass, :relationships_readable_by_default, true) default(klass, :relationships_writable_by_default, true) default(klass, :filters_accept_nil_by_default, false) default(klass, :filters_deny_empty_by_default, false) unless klass.config[:attributes][:id] klass.attribute :id, :integer_id end klass.stat total: [:count] if defined?(::Rails) && ::Rails.env.development? # Avoid adding dupe resources when re-autoloading Graphiti.resources.reject! { |r| r.name == klass.name } end Graphiti.resources << klass end
Public Instance Methods
abstract_class()
click to toggle source
# File lib/graphiti/resource/configuration.rb, line 150 def abstract_class @abstract_class end
abstract_class=(val)
click to toggle source
# File lib/graphiti/resource/configuration.rb, line 154 def abstract_class=(val) if (@abstract_class = val) self.serializer = nil self.type = nil self.graphql_entrypoint = nil end end
abstract_class?()
click to toggle source
# File lib/graphiti/resource/configuration.rb, line 146 def abstract_class? !!abstract_class end
adapter()
click to toggle source
# File lib/graphiti/resource/configuration.rb, line 274 def adapter @adapter ||= self.class.adapter.new(self) end
all_attributes()
click to toggle source
# File lib/graphiti/resource/configuration.rb, line 228 def all_attributes attributes.merge(extra_attributes) end
attributes()
click to toggle source
# File lib/graphiti/resource/configuration.rb, line 220 def attributes config[:attributes] end
config()
click to toggle source
# File lib/graphiti/resource/configuration.rb, line 199 def config @config ||= { filters: {}, grouped_filters: {}, default_filters: {}, stats: {}, sort_all: nil, sorts: {}, pagination: nil, after_graph_persist: {}, before_commit: {}, after_commit: {}, attributes: {}, extra_attributes: {}, sideloads: {}, callbacks: {}, links: {} } end
default(object, attr, value)
click to toggle source
# File lib/graphiti/resource/configuration.rb, line 191 def default(object, attr, value) prior = object.send(attr) unless prior || prior == false object.send(:"#{attr}=", value) end end
default_filters()
click to toggle source
# File lib/graphiti/resource/configuration.rb, line 256 def default_filters config[:default_filters] end
extra_attributes()
click to toggle source
# File lib/graphiti/resource/configuration.rb, line 224 def extra_attributes config[:extra_attributes] end
filters()
click to toggle source
# File lib/graphiti/resource/configuration.rb, line 236 def filters config[:filters] end
get_attr(name, flag, opts = {})
click to toggle source
# File lib/graphiti/resource/configuration.rb, line 140 def get_attr(name, flag, opts = {}) defaults = {request: false} opts = defaults.merge(opts) new.get_attr(name, flag, **opts) end
get_attr!(name, flag, opts = {})
click to toggle source
# File lib/graphiti/resource/configuration.rb, line 135 def get_attr!(name, flag, opts = {}) opts[:raise_error] = true get_attr(name, flag, opts) end
grouped_filters()
click to toggle source
# File lib/graphiti/resource/configuration.rb, line 240 def grouped_filters config[:grouped_filters] end
infer_model()
click to toggle source
# File lib/graphiti/resource/configuration.rb, line 170 def infer_model name&.sub(/.*\KResource/, "")&.safe_constantize end
infer_serializer_superclass()
click to toggle source
@api private
# File lib/graphiti/resource/configuration.rb, line 175 def infer_serializer_superclass serializer_class = ::Graphiti::Serializer namespace = Util::Class.namespace_for(self) app_serializer = "#{namespace}::ApplicationSerializer" .safe_constantize app_serializer ||= "ApplicationSerializer".safe_constantize if app_serializer if app_serializer.ancestors.include?(serializer_class) serializer_class = app_serializer end end serializer_class end
infer_type()
click to toggle source
# File lib/graphiti/resource/configuration.rb, line 162 def infer_type if name.present? name.demodulize.sub(/.*\KResource/, "").underscore.pluralize.to_sym else :undefined_jsonapi_type end end
links()
click to toggle source
# File lib/graphiti/resource/configuration.rb, line 260 def links config[:links] end
pagination()
click to toggle source
# File lib/graphiti/resource/configuration.rb, line 252 def pagination config[:pagination] end
sideloads()
click to toggle source
# File lib/graphiti/resource/configuration.rb, line 232 def sideloads config[:sideloads] end
sort_all()
click to toggle source
# File lib/graphiti/resource/configuration.rb, line 286 def sort_all self.class.sort_all end
sorts()
click to toggle source
# File lib/graphiti/resource/configuration.rb, line 244 def sorts config[:sorts] end
stats()
click to toggle source
# File lib/graphiti/resource/configuration.rb, line 248 def stats config[:stats] end