Module: Trailblazer::Finder::Dsl
- Defined in:
- lib/trailblazer/finder/dsl.rb
Instance Attribute Summary collapse
- #config ⇒ Object readonly
Instance Method Summary collapse
- #adapter(adapter_name) ⇒ Object
- #current_adapter ⇒ Object
- #current_paginator ⇒ Object
- #entity(&block) ⇒ Object
- #filter_by(name, options = {}, &block) ⇒ Object
- #filters_count ⇒ Object
- #inherited(base) ⇒ Object
- #paginator(paginator_name) ⇒ Object
- #paging(per_page: 25, min_per_page: 10, max_per_page: 100) ⇒ Object
- #properties_count ⇒ Object
- #property(name, options = {}) ⇒ Object
Instance Attribute Details
#config ⇒ Object
84 85 86 |
# File 'lib/trailblazer/finder/dsl.rb', line 84 def config @config ||= Configuration.new end |
Instance Method Details
#adapter(adapter_name) ⇒ Object
117 118 119 |
# File 'lib/trailblazer/finder/dsl.rb', line 117 def adapter(adapter_name) config.adapter = adapter_name.to_s end |
#current_adapter ⇒ Object
125 126 127 |
# File 'lib/trailblazer/finder/dsl.rb', line 125 def current_adapter config.adapter end |
#current_paginator ⇒ Object
129 130 131 |
# File 'lib/trailblazer/finder/dsl.rb', line 129 def current_paginator config.paginator end |
#entity(&block) ⇒ Object
95 96 97 |
# File 'lib/trailblazer/finder/dsl.rb', line 95 def entity(&block) config.entity = block end |
#filter_by(name, options = {}, &block) ⇒ Object
110 111 112 113 114 115 |
# File 'lib/trailblazer/finder/dsl.rb', line 110 def filter_by(name, = {}, &block) filter_name = name.to_sym config.state.update!(:filters) do |filters| filters.merge(filter_name => { name: name, with: [:with], block: block }.compact) end end |
#filters_count ⇒ Object
133 134 135 |
# File 'lib/trailblazer/finder/dsl.rb', line 133 def filters_count config.filters.count end |
#inherited(base) ⇒ Object
88 89 90 91 92 93 |
# File 'lib/trailblazer/finder/dsl.rb', line 88 def inherited(base) # Skip inheritance for the base Trailblazer::Finder class return if name == 'Trailblazer::Finder' base.config = config.clone end |
#paginator(paginator_name) ⇒ Object
121 122 123 |
# File 'lib/trailblazer/finder/dsl.rb', line 121 def paginator(paginator_name) config.paginator = paginator_name.to_s end |
#paging(per_page: 25, min_per_page: 10, max_per_page: 100) ⇒ Object
99 100 101 102 103 |
# File 'lib/trailblazer/finder/dsl.rb', line 99 def paging(per_page: 25, min_per_page: 10, max_per_page: 100) config.state.update!(:paging) do |paging| paging.merge(per_page: per_page, min_per_page: min_per_page, max_per_page: max_per_page) end end |
#properties_count ⇒ Object
137 138 139 |
# File 'lib/trailblazer/finder/dsl.rb', line 137 def properties_count config.properties.count end |
#property(name, options = {}) ⇒ Object
105 106 107 108 |
# File 'lib/trailblazer/finder/dsl.rb', line 105 def property(name, = {}) config.state.update!(:properties) { |props| props.merge(name => .merge(type: [:type] || Types::String)) } config.state.update!(:sorting) { |sort| sort.merge(name => ([:sort_direction] || :desc)) } if [:sortable] end |