flexible_api 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/lib/flexible_api.rb CHANGED
@@ -42,7 +42,11 @@ module FlexibleApi
42
42
  def find_all_hash(options = {})
43
43
  options.assert_valid_keys(:request_level)
44
44
  level = find_level(options[:request_level])
45
- records = self.all(:select => level.select_field.join(', '), :include => level.include_field)
45
+
46
+ query = self
47
+ level.scopes.each { |s, args| query = query.send(s, *args) }
48
+
49
+ records = query.all(:select => level.select_field.join(', '), :include => level.include_field)
46
50
  records.map { |r| level.receive(r) }
47
51
  end
48
52
 
@@ -7,13 +7,14 @@ module FlexibleApi
7
7
  @klass = klass
8
8
  @display_fields = Set.new
9
9
  @select_fields = Set.new
10
+ @scopes = []
10
11
  @includes = []
11
12
  @notations = {}
12
13
  @eaten_levels = []
13
14
  @select_fields << "`#{@klass.table_name}`.#{@klass.primary_key}" # auto-select primary key
14
15
  end
15
16
 
16
- attr_reader :display_fields, :name, :notations
17
+ attr_reader :display_fields, :name, :notations, :scopes
17
18
 
18
19
  def to_hash
19
20
  {
@@ -29,6 +30,10 @@ module FlexibleApi
29
30
  @eaten_levels << @klass.find_level(name)
30
31
  end
31
32
 
33
+ def scope(name, args)
34
+ @scopes << [name, args]
35
+ end
36
+
32
37
  def notation(notation_name, options = {}, &block)
33
38
  options.assert_valid_keys :requires
34
39
  requires *options[:requires]
@@ -1,5 +1,5 @@
1
1
  module FlexibleApi
2
2
 
3
- VERSION = '0.0.4'
3
+ VERSION = '0.0.5'
4
4
 
5
5
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flexible_api
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
4
+ hash: 21
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 4
10
- version: 0.0.4
9
+ - 5
10
+ version: 0.0.5
11
11
  platform: ruby
12
12
  authors:
13
13
  - John Crepezzi
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-03-29 00:00:00 +01:00
18
+ date: 2011-03-30 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency