dm-unlazy 0.0.1.2 → 0.0.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/dm-unlazy/collection.rb +24 -13
  2. metadata +7 -7
@@ -30,13 +30,19 @@ class Collection
30
30
  end
31
31
 
32
32
  def method_missing (id, *args, &block)
33
+ collection = @collection
34
+
33
35
  if (Array.instance_method(id) rescue false)
34
36
  reload unless @resources
35
37
 
36
- return @resources.__send__ id, *args, &block
38
+ if @resources.is_a?(Array)
39
+ return @resources.__send__ id, *args, &block
40
+ end
41
+
42
+ collection = @resources
37
43
  end
38
44
 
39
- result = @collection.__send__ id, *args, &block
45
+ result = collection.__send__ id, *args, &block
40
46
 
41
47
  if result.is_a?(DataMapper::Collection)
42
48
  Collection.new(result)
@@ -54,17 +60,22 @@ class Collection
54
60
  end
55
61
 
56
62
  def reload
57
- adapter = repository.adapter
58
- query = @collection.all(:fields => @fields || model.properties.map(&:field)).query
59
- statement = adapter.send(:select_statement, query).flatten(1)
60
-
61
- @resources = adapter.select(*statement).map {|data|
62
- if data.is_a?(Struct)
63
- Unlazy::Model.new(model, data)
64
- else
65
- Unlazy::Model.new(model, Struct.new(@fields.first).new(data))
66
- end
67
- }
63
+ adapter = repository.adapter
64
+ collection = @collection.all(:fields => @fields || model.properties.map(&:field))
65
+
66
+ if adapter.respond_to? :select
67
+ statement = adapter.send(:select_statement, collection.query).flatten(1)
68
+
69
+ @resources = adapter.select(*statement).map {|data|
70
+ if data.is_a?(Struct)
71
+ Unlazy::Model.new(model, data)
72
+ else
73
+ Unlazy::Model.new(model, Struct.new(@fields.first).new(data))
74
+ end
75
+ }
76
+ else
77
+ @resources = collection
78
+ end
68
79
 
69
80
  self
70
81
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dm-unlazy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1.2
4
+ version: 0.0.1.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-02-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: dm-core
16
- requirement: &19570140 !ruby/object:Gem::Requirement
16
+ requirement: &10648440 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *19570140
24
+ version_requirements: *10648440
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rake
27
- requirement: &19569000 !ruby/object:Gem::Requirement
27
+ requirement: &10647700 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *19569000
35
+ version_requirements: *10647700
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rspec
38
- requirement: &19568000 !ruby/object:Gem::Requirement
38
+ requirement: &10647000 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *19568000
46
+ version_requirements: *10647000
47
47
  description:
48
48
  email: meh@paranoici.org
49
49
  executables: []