Class: AkidoLib::Query

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

Constant Summary collapse

FILTERS =
[
  :content, 
  :id, 
  :last_updated, 
  :profile, 
  :query, 
  :security, 
  :tag,
  :text,
  :filter
]

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(resource, base_url) ⇒ Query

Returns a new instance of Query.



15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/query.rb', line 15

def initialize(resource, base_url)
  @base_url = if base_url
                base_url
              elsif @@base_url
                @@base_url
              else
                AkidoLib::Model
                  .client
                  .full_resource_url(:resource => @model)
              end

  @resource = resource
  @query = []
end

Class Method Details

.set_base_url!(base_url) ⇒ Object



73
74
75
# File 'lib/query.rb', line 73

def self.set_base_url!(base_url)
  @@base_url = base_url
end

Instance Method Details

#custom(key, value) ⇒ Object



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

def custom(key, value)
  @query.push({key => value})
end

#fetch!Object



70
71
# File 'lib/query.rb', line 70

def fetch!
end

#include(relation, options) ⇒ Object



40
41
42
43
44
45
46
47
48
# File 'lib/query.rb', line 40

def include(relation, options)
  key = if options[:rev]
          :_revinclude
        else
          :_include
        end

  @query.push({key => relation})
end

#last_updated(date) ⇒ Object



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

def last_updated(date)
  @query.push({:_lastUpdated => date.xmlschema})
end

#unset(key) ⇒ Object



58
59
60
61
62
63
64
# File 'lib/query.rb', line 58

def unset(key)
  key = "_#{key.to_s.camelize(:lower)}".to_sym

  @query.reject! do |param| 
    param.keys.include?(key)
  end
end

#urlObject



66
67
68
# File 'lib/query.rb', line 66

def url
  "#{@base_url}/#{resource_name}?#{query_string}"
end

#where(filters) ⇒ Object



30
31
32
33
34
35
36
37
38
# File 'lib/query.rb', line 30

def where(filters)
  filters.each do |filter, value|
    if FILTERS.include?(filter.to_s.underscore.downcase.to_sym)
      @query.push({ "_#{filter.to_s.camelize(:lower)}".to_sym => value })
    end
  end

  return self
end