Class: Trailblazer::Finder::Activities::ProcessAdapters

Inherits:
Activity::Railway
  • Object
show all
Defined in:
lib/trailblazer/finder/activities/process_adapters.rb

Instance Method Summary collapse

Instance Method Details

#invalid_paginator_error(ctx) ⇒ Object



27
28
29
30
31
# File 'lib/trailblazer/finder/activities/process_adapters.rb', line 27

def invalid_paginator_error(ctx, **)
  (ctx[:errors] ||= []) << {
    paginator: "Can't use paginator #{ctx[:config].paginator} without using an ORM like ActiveRecord or Sequel"
  }
end

#invalid_paginator_handler(_e, ctx, _flow_options) ⇒ Object



33
34
35
# File 'lib/trailblazer/finder/activities/process_adapters.rb', line 33

def invalid_paginator_handler(_e, (ctx, _flow_options), **)
  invalid_paginator_error(ctx)
end

#set_adapter(ctx, _flow_options) ⇒ Object



7
8
9
10
11
12
13
14
15
# File 'lib/trailblazer/finder/activities/process_adapters.rb', line 7

def set_adapter((ctx, _flow_options), **)
  adapter = ctx[:adapter]
  ctx[:orm] = {}
  ctx[:orm][:adapter] = adapter
  ctx[:orm][:predicates] = "Trailblazer::Finder::Adapters::#{adapter}::Predicates"
  ctx[:orm][:paging] = "Trailblazer::Finder::Adapters::#{adapter}::Paging"
  ctx[:orm][:sorting] = "Trailblazer::Finder::Adapters::#{adapter}::Sorting"
  true
end

#set_paginator(ctx) ⇒ Object



17
18
19
20
21
22
23
24
25
# File 'lib/trailblazer/finder/activities/process_adapters.rb', line 17

def set_paginator(ctx, **)
  paginator = ctx[:config].paginator
  return true unless paginator
  return false unless EXT_ORM_ADAPTERS.(ctx[:orm][:adapter])
  return false unless PAGING_ADAPTERS.(paginator)

  ctx[:orm][:paging] = "Trailblazer::Finder::Adapters::#{paginator}::Paging"
  true
end