Module: Graphiti::Resource::Configuration
- Extended by:
- ActiveSupport::Concern
- Included in:
- Graphiti::Resource
- Defined in:
- lib/graphiti/resource/configuration.rb
Defined Under Namespace
Modules: DslReaders, 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
- DSL_SETTINGS =
:nodoc:
[:adapter, :base_url, :endpoint_namespace, :model, :remote, :remote_base_url, :type, :polymorphic, :polymorphic_child, :serializer, :graphql_entrypoint, *SETTINGS.keys].freeze
- UNSET =
:nodoc:
Object.new.freeze
- READERS_REDEFINED_PER_CLASS =
Rails 7 class_attribute writers redefine the reader on the receiving class itself, ahead of anything prepended on Resource.
ActiveSupport::VERSION::MAJOR < 8
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
495 496 497 |
# File 'lib/graphiti/resource/configuration.rb', line 495 def adapter @adapter ||= self.class.adapter.new(self) end |
#all_attributes ⇒ Object
531 532 533 |
# File 'lib/graphiti/resource/configuration.rb', line 531 def all_attributes self.class.all_attributes end |
#attributes ⇒ Object
523 524 525 |
# File 'lib/graphiti/resource/configuration.rb', line 523 def attributes self.class.attributes end |
#default_filters ⇒ Object
535 536 537 |
# File 'lib/graphiti/resource/configuration.rb', line 535 def default_filters self.class.default_filters end |
#extra_attributes ⇒ Object
527 528 529 |
# File 'lib/graphiti/resource/configuration.rb', line 527 def extra_attributes self.class.extra_attributes end |
#filters ⇒ Object
499 500 501 |
# File 'lib/graphiti/resource/configuration.rb', line 499 def filters self.class.filters end |
#get_attr(name, flag, request: false, raise_error: false) ⇒ Object
491 492 493 |
# File 'lib/graphiti/resource/configuration.rb', line 491 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
486 487 488 489 |
# File 'lib/graphiti/resource/configuration.rb', line 486 def get_attr!(name, flag, = {}) [:raise_error] = true get_attr(name, flag, **) end |
#grouped_filters ⇒ Object
503 504 505 |
# File 'lib/graphiti/resource/configuration.rb', line 503 def grouped_filters self.class.grouped_filters end |
#pagination ⇒ Object
519 520 521 |
# File 'lib/graphiti/resource/configuration.rb', line 519 def pagination self.class.pagination end |
#sort_all ⇒ Object
507 508 509 |
# File 'lib/graphiti/resource/configuration.rb', line 507 def sort_all self.class.sort_all end |
#sorts ⇒ Object
511 512 513 |
# File 'lib/graphiti/resource/configuration.rb', line 511 def sorts self.class.sorts end |
#stats ⇒ Object
515 516 517 |
# File 'lib/graphiti/resource/configuration.rb', line 515 def stats self.class.stats end |