Module: Graphiti::Resource::Configuration
- Extended by:
- ActiveSupport::Concern
- Included in:
- Graphiti::Resource
- Defined in:
- lib/graphiti/resource/configuration.rb
Defined Under Namespace
Modules: Overrides
Constant Summary collapse
- DEFAULT_MAX_PAGE_SIZE =
1_000- LINK_MODES =
[true, false, :on_demand].freeze
- BELONGS_TO_RESOURCE_IDS_MODES =
[:foreign_key, :always, :never].freeze
- BLANK_MODES =
[:literal, :null, :rejected].freeze
- SETTING_GROUPS =
Grouped for the ApplicationResource the install generator writes.
{ # :nodoc: attributes: { attributes_readable_by_default: {default: true}, attributes_writable_by_default: {default: true}, attributes_sortable_by_default: {default: true}, attributes_filterable_by_default: {default: true}, attributes_schema_by_default: {default: true}, typecast_reads: {default: true} }, relationships: { relationships_readable_by_default: {default: true}, relationships_writable_by_default: {default: true}, relationship_placeholders: {default: false, note: "render placeholders for relationships with no ids and no link"}, belongs_to_resource_ids_by_default: { default: :foreign_key, values: BELONGS_TO_RESOURCE_IDS_MODES, invalid: ->(klass, value) { Errors::InvalidBelongsToResourceIds.new(klass, value) } } }, filters: { filter_blanks_treated_as: { default: :literal, values: BLANK_MODES, invalid: ->(klass, value) { Errors::InvalidFilterBlanks.new(klass, :filter_blanks_treated_as, value) } } }, sorting: { default_sort: {default: nil, note: "per resource, e.g. [{id: :desc}]"} }, pagination: { page_default_size: {default: nil, note: "unset falls back to 20"}, page_max_size: {default: DEFAULT_MAX_PAGE_SIZE, format: "1_000"}, page_cursors: {default: false, note: "render cursors for pagination"}, page_links: { default: false, values: LINK_MODES, invalid: ->(klass, value) { Errors::InvalidLinkRendering.new(klass, :page_links, value) } } }, endpoints: { validate_requests: {default: true, note: "refuse requests to undeclared endpoints"} }, links: { relationship_links: { default: true, values: LINK_MODES, invalid: ->(klass, value) { Errors::InvalidLinkRendering.new(klass, :relationship_links, value) } }, validate_links: {default: true, note: "refuse to render links to unroutable endpoints"} } }.freeze
- SETTINGS =
:nodoc:
SETTING_GROUPS.values.reduce(:merge).freeze
Instance Method Summary collapse
- #adapter ⇒ Object
- #all_attributes ⇒ Object
- #attributes ⇒ Object
- #default_filters ⇒ Object
- #extra_attributes ⇒ Object
- #filters ⇒ Object
- #get_attr(name, flag, request: false, raise_error: false) ⇒ Object
- #get_attr!(name, flag, options = {}) ⇒ Object
- #grouped_filters ⇒ Object
- #pagination ⇒ Object
- #sort_all ⇒ Object
- #sorts ⇒ Object
- #stats ⇒ Object
Instance Method Details
#adapter ⇒ Object
375 376 377 |
# File 'lib/graphiti/resource/configuration.rb', line 375 def adapter @adapter ||= self.class.adapter.new(self) end |
#all_attributes ⇒ Object
411 412 413 |
# File 'lib/graphiti/resource/configuration.rb', line 411 def all_attributes self.class.all_attributes end |
#attributes ⇒ Object
403 404 405 |
# File 'lib/graphiti/resource/configuration.rb', line 403 def attributes self.class.attributes end |
#default_filters ⇒ Object
415 416 417 |
# File 'lib/graphiti/resource/configuration.rb', line 415 def default_filters self.class.default_filters end |
#extra_attributes ⇒ Object
407 408 409 |
# File 'lib/graphiti/resource/configuration.rb', line 407 def extra_attributes self.class.extra_attributes end |
#filters ⇒ Object
379 380 381 |
# File 'lib/graphiti/resource/configuration.rb', line 379 def filters self.class.filters end |
#get_attr(name, flag, request: false, raise_error: false) ⇒ Object
371 372 373 |
# File 'lib/graphiti/resource/configuration.rb', line 371 def get_attr(name, flag, request: false, raise_error: false) Util::AttributeCheck.run(self, name, flag, request, raise_error) end |
#get_attr!(name, flag, options = {}) ⇒ Object
366 367 368 369 |
# File 'lib/graphiti/resource/configuration.rb', line 366 def get_attr!(name, flag, = {}) [:raise_error] = true get_attr(name, flag, **) end |
#grouped_filters ⇒ Object
383 384 385 |
# File 'lib/graphiti/resource/configuration.rb', line 383 def grouped_filters self.class.grouped_filters end |
#pagination ⇒ Object
399 400 401 |
# File 'lib/graphiti/resource/configuration.rb', line 399 def pagination self.class.pagination end |
#sort_all ⇒ Object
387 388 389 |
# File 'lib/graphiti/resource/configuration.rb', line 387 def sort_all self.class.sort_all end |
#sorts ⇒ Object
391 392 393 |
# File 'lib/graphiti/resource/configuration.rb', line 391 def sorts self.class.sorts end |
#stats ⇒ Object
395 396 397 |
# File 'lib/graphiti/resource/configuration.rb', line 395 def stats self.class.stats end |