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 =
[:as_literal, :as_nil, :reject].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}, belongs_to_resource_ids_by_default: { default: :foreign_key, values: BELONGS_TO_RESOURCE_IDS_MODES, invalid: ->(klass, value) { Errors::InvalidBelongsToResourceIds.new(klass, value) } } }, filters: { filters_blanks_by_default: { default: :as_literal, values: BLANK_MODES, invalid: ->(klass, value) { Errors::InvalidFilterBlanks.new(klass, :filters_blanks_by_default, 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
374 375 376 |
# File 'lib/graphiti/resource/configuration.rb', line 374 def adapter @adapter ||= self.class.adapter.new(self) end |
#all_attributes ⇒ Object
410 411 412 |
# File 'lib/graphiti/resource/configuration.rb', line 410 def all_attributes self.class.all_attributes end |
#attributes ⇒ Object
402 403 404 |
# File 'lib/graphiti/resource/configuration.rb', line 402 def attributes self.class.attributes end |
#default_filters ⇒ Object
414 415 416 |
# File 'lib/graphiti/resource/configuration.rb', line 414 def default_filters self.class.default_filters end |
#extra_attributes ⇒ Object
406 407 408 |
# File 'lib/graphiti/resource/configuration.rb', line 406 def extra_attributes self.class.extra_attributes end |
#filters ⇒ Object
378 379 380 |
# File 'lib/graphiti/resource/configuration.rb', line 378 def filters self.class.filters end |
#get_attr(name, flag, request: false, raise_error: false) ⇒ Object
370 371 372 |
# File 'lib/graphiti/resource/configuration.rb', line 370 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
365 366 367 368 |
# File 'lib/graphiti/resource/configuration.rb', line 365 def get_attr!(name, flag, = {}) [:raise_error] = true get_attr(name, flag, **) end |
#grouped_filters ⇒ Object
382 383 384 |
# File 'lib/graphiti/resource/configuration.rb', line 382 def grouped_filters self.class.grouped_filters end |
#pagination ⇒ Object
398 399 400 |
# File 'lib/graphiti/resource/configuration.rb', line 398 def pagination self.class.pagination end |
#sort_all ⇒ Object
386 387 388 |
# File 'lib/graphiti/resource/configuration.rb', line 386 def sort_all self.class.sort_all end |
#sorts ⇒ Object
390 391 392 |
# File 'lib/graphiti/resource/configuration.rb', line 390 def sorts self.class.sorts end |
#stats ⇒ Object
394 395 396 |
# File 'lib/graphiti/resource/configuration.rb', line 394 def stats self.class.stats end |