Class: Roaster::Query

Inherits:
Object
  • Object
show all
Defined in:
lib/roaster/query.rb

Overview

Query represents the operation performed on the target, and its parameters

Defined Under Namespace

Classes: Target

Constant Summary collapse

DEFAULT_PAGE_SIZE =

TODO: Move in config class

10
OPERATIONS =
[:create, :read, :update, :delete]

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(operation, target, mapping, params = {}) ⇒ Query

Returns a new instance of Query.



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/roaster/query.rb', line 33

def initialize(operation, target, mapping, params = {})
  raise "Invalid operation: #{operation}" unless OPERATIONS.include?(operation)
  params.symbolize_keys! if params.respond_to?(:symbolize_keys!)

  @operation = operation
  @target = target
  @page = params[:page] ? params[:page].to_i : 1
  @page_size = params[:page_size] ? params[:page_size].to_i : DEFAULT_PAGE_SIZE
  @includes = includes_from_params(params, mapping)
  @fields = fields_from_params(params, mapping)
  @filters = filters_from_params(params, mapping)
  @sorting = sorting_from_params(params, mapping)
  #VALIDATE THIS (TARGET) ! omgz =D
  @mapping = mapping
end

Instance Attribute Details

#fieldsObject

TODO: This is not validating includes it seems (HARD VALIDATE EVERYTHING, raise is your FRIEND)



24
25
26
# File 'lib/roaster/query.rb', line 24

def fields
  @fields
end

#filtersObject

TODO: This is not validating includes it seems (HARD VALIDATE EVERYTHING, raise is your FRIEND)



24
25
26
# File 'lib/roaster/query.rb', line 24

def filters
  @filters
end

#includesObject

TODO: This is not validating includes it seems (HARD VALIDATE EVERYTHING, raise is your FRIEND)



24
25
26
# File 'lib/roaster/query.rb', line 24

def includes
  @includes
end

#operationObject

TODO: This is not validating includes it seems (HARD VALIDATE EVERYTHING, raise is your FRIEND)



24
25
26
# File 'lib/roaster/query.rb', line 24

def operation
  @operation
end

#pageObject

TODO: This is not validating includes it seems (HARD VALIDATE EVERYTHING, raise is your FRIEND)



24
25
26
# File 'lib/roaster/query.rb', line 24

def page
  @page
end

#page_sizeObject

TODO: This is not validating includes it seems (HARD VALIDATE EVERYTHING, raise is your FRIEND)



24
25
26
# File 'lib/roaster/query.rb', line 24

def page_size
  @page_size
end

#sortingObject

TODO: This is not validating includes it seems (HARD VALIDATE EVERYTHING, raise is your FRIEND)



24
25
26
# File 'lib/roaster/query.rb', line 24

def sorting
  @sorting
end

#targetObject

TODO: This is not validating includes it seems (HARD VALIDATE EVERYTHING, raise is your FRIEND)



24
25
26
# File 'lib/roaster/query.rb', line 24

def target
  @target
end

Instance Method Details

#default_page_size?Boolean

Returns:

  • (Boolean)


49
50
51
# File 'lib/roaster/query.rb', line 49

def default_page_size?
  @page_size == DEFAULT_PAGE_SIZE
end

#filters_as_url_paramsObject



53
54
55
# File 'lib/roaster/query.rb', line 53

def filters_as_url_params
  @filters.sort.map { |k,v| map_filter_ids(k,v) }.join('&')
end

#sorting_as_url_paramsObject



57
58
59
60
# File 'lib/roaster/query.rb', line 57

def sorting_as_url_params
  sorting_values = sorting.map { |k, v| v == :asc ? k : "-#{k}" }.join(',')
  "sort=#{sorting_values}"
end