get 0.1.2.1 → 0.1.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 599e5cc5e79cc22d781a0706eeaddbe89c904afa
4
- data.tar.gz: 242e215c881e28a592acb4b17e4556127c5ea373
3
+ metadata.gz: 65fd187b7fdf6d925755baa22b7a7ce32cebc00e
4
+ data.tar.gz: 48fa9d577da086b0a6f90986106aa1c9581e8b40
5
5
  SHA512:
6
- metadata.gz: 776b3827367c58463beeb4805e433bccd8dca243d7cc718713daaf832d804e71872d391da65baedb2713f516fda1d8541e1ee4a08b4aa7bb6ccefa7327b47f19
7
- data.tar.gz: ef3c4e9093a4f74a01d922fe9a314a40f2ac64cbd8f45cc826b18ee1b96bdddaf613ecd8a5c64d076d519c0a0bc111361d4331ca2a9a2e253d2d3abb786859a5
6
+ metadata.gz: 11e0607221f9bb3c6c42770f55eef24d43a5f2bac228fd6e876bccf648394a28e3ed815005a3179930d88077b74f2a7e403c78bd04e775943986ab3bdd66aec9
7
+ data.tar.gz: 80f305335e0721add5e78c2879849a1e6fed6eaedc4d2cf2fd4ae1a6d240025923dc4e7d3a14fea37c346b86b3ffef66c99061793de2b8e47c45c02abff6df0f
@@ -12,7 +12,7 @@ module Get
12
12
  private
13
13
 
14
14
  def parse_class_name(class_name)
15
- @result_entity, key = class_name.to_s.match(::Get::ASK_CLASS_REGEX).values_at(1, 3)
15
+ @result_entity, key = class_name.to_s.match(::Get::GET_CLASS_REGEX).values_at(1, 3)
16
16
  @key = key.present? ? key.symbolize : nil
17
17
  end
18
18
  end
data/lib/get/builders.rb CHANGED
@@ -4,7 +4,7 @@ module Get
4
4
 
5
5
  class << self
6
6
  def generate_class(name)
7
- method = name.to_s.match(ASK_CLASS_REGEX)[2]
7
+ method = name.to_s.match(GET_CLASS_REGEX)[2]
8
8
  Get.const_set(name, builder_for_method(method).new(name).class)
9
9
  end
10
10
 
@@ -15,16 +15,12 @@ module Get
15
15
 
16
16
  def adapter
17
17
  raise ::Get::Errors::Base.new('Adapter has not been configured') unless configuration.adapter
18
- @adapter ||= adapter_map[configuration.adapter]
18
+ @adapter ||= configuration.adapter
19
19
  end
20
20
 
21
21
  def entity_for(model)
22
22
  configuration.entity_for(model)
23
23
  end
24
-
25
- def adapter_map
26
- @adapter_map ||= ::Get::Adapters::AbstractAdapter.descendants.reduce({}) { |hash, (klass)| hash.merge(klass.name.split('::').last.underscore.to_sym => klass) }
27
- end
28
24
  end
29
25
 
30
26
  class Config
@@ -34,6 +30,11 @@ module Get
34
30
  @registered_entities = {}
35
31
  end
36
32
 
33
+ def set_adapter(adapter)
34
+ Horza.configure { |config| config.adapter = adapter }
35
+ @adapter = Horza.adapter
36
+ end
37
+
37
38
  def entity_for(model)
38
39
  @registered_entities[model]
39
40
  end
data/lib/get/db.rb CHANGED
@@ -16,6 +16,8 @@ module Get
16
16
  def call
17
17
  execute_queries
18
18
  self.class.entity_factory.build(@query)
19
+ rescue Horza::Errors::InvalidAncestry
20
+ raise Get::Errors::InvalidAncestry
19
21
  end
20
22
 
21
23
  private
data/lib/get/entities.rb CHANGED
@@ -6,7 +6,7 @@ module Get
6
6
  def const_missing(name)
7
7
  return super(name) unless name.to_s.match(/^#{CLASS_PREFIX}/)
8
8
 
9
- parent_klass = name.to_s.plural? ? Get::Entities::Collection : Get::Entities::Single
9
+ parent_klass = name.to_s.plural? ? Horza::Entities::Collection : Horza::Entities::Single
10
10
  Get::Entities.const_set(name, Class.new(parent_klass))
11
11
  end
12
12
  end
data/lib/get.rb CHANGED
@@ -1,11 +1,7 @@
1
- require 'get/adapters/abstract_adapter'
2
- require 'get/adapters/active_record'
3
1
  require 'get/builders/base_builder'
4
2
  require 'get/builders/ancestry_builder'
5
3
  require 'get/builders/query_builder'
6
4
  require 'get/core_extensions/string'
7
- require 'get/entities/single'
8
- require 'get/entities/collection'
9
5
  require 'get/builders'
10
6
  require 'get/configuration'
11
7
  require 'get/db'
@@ -13,12 +9,12 @@ require 'get/entities'
13
9
  require 'get/entity_factory'
14
10
  require 'get/errors'
15
11
  require 'get/run_methods'
12
+ require 'horza'
16
13
 
17
14
  module Get
18
15
  extend Get::Configuration
19
16
 
20
- ASK_CLASS_REGEX = /^(.*)(By|From)(.*)/
21
-
17
+ GET_CLASS_REGEX = /^(.*)(By|From)(.*)/
22
18
 
23
19
  class << self
24
20
  attr_writer :configuration
@@ -30,7 +26,7 @@ module Get
30
26
  end
31
27
 
32
28
  def const_missing(name)
33
- return super(name) unless name.to_s.match(ASK_CLASS_REGEX)
29
+ return super(name) unless name.to_s.match(GET_CLASS_REGEX)
34
30
  Builders.generate_class(name)
35
31
  end
36
32
  end
data/spec/get_spec.rb CHANGED
@@ -38,14 +38,14 @@ describe Get do
38
38
  after(:all) { Get.configuration = @system_config }
39
39
 
40
40
  # Reset base config with each iteration
41
- before { Get.configure { |config| config.adapter = adapter } }
41
+ before { Get.configure { |config| config.set_adapter(adapter) } }
42
42
  after do
43
43
  GetSpec::User.delete_all
44
44
  GetSpec::Employer.delete_all
45
45
  Get.reset
46
46
  end
47
47
 
48
- class MyCustomEntity < Get::Entities::Collection
48
+ class MyCustomEntity < Horza::Entities::Collection
49
49
  def east_london_length
50
50
  "#{length}, bruv"
51
51
  end
@@ -77,7 +77,7 @@ describe Get do
77
77
  context 'when entity has been registered' do
78
78
  before do
79
79
  Get.configure do |config|
80
- config.adapter = adapter
80
+ config.set_adapter(adapter)
81
81
  config.register_entity(:users_by_last_name, MyCustomEntity)
82
82
  end
83
83
  end
@@ -98,12 +98,12 @@ describe Get do
98
98
  context '#adapter' do
99
99
  context 'when the adapter is set' do
100
100
  it 'returns the correct adapter class' do
101
- expect(Get.adapter).to eq Get::Adapters::ActiveRecord
101
+ expect(Get.adapter).to eq Horza::Adapters::ActiveRecord
102
102
  end
103
103
  end
104
104
 
105
105
  context 'when the adapter is not set' do
106
- before { Get.configure { |config| config.adapter = nil } }
106
+ before { Get.reset }
107
107
  after { Get.reset }
108
108
 
109
109
  it 'throws error' do
@@ -115,7 +115,7 @@ describe Get do
115
115
  context '#reset' do
116
116
  before do
117
117
  Get.configure do |config|
118
- config.adapter = 'my_adapter'
118
+ config.set_adapter('my_adapter')
119
119
  config.register_entity(:users_by_last_name, MyCustomEntity)
120
120
  end
121
121
  Get.reset
@@ -138,7 +138,7 @@ describe Get do
138
138
  end
139
139
 
140
140
  it 'returns a dynamically generated response entity' do
141
- expect(Get::UserById.run!(user.id).is_a?(Get::Entities::Single)).to be true
141
+ expect(Get::UserById.run!(user.id).is_a?(Horza::Entities::Single)).to be true
142
142
  end
143
143
  end
144
144
 
@@ -149,7 +149,7 @@ describe Get do
149
149
  end
150
150
 
151
151
  it 'returns a dynamically generated response entity' do
152
- expect(Get::UserBy.run!(last_name: last_name).is_a?(Get::Entities::Single)).to be true
152
+ expect(Get::UserBy.run!(last_name: last_name).is_a?(Horza::Entities::Single)).to be true
153
153
  end
154
154
  end
155
155
  end
@@ -183,7 +183,7 @@ describe Get do
183
183
  end
184
184
 
185
185
  it 'returns a dynamically generated response entity' do
186
- expect(Get::UserById.run(user.id).is_a?(Get::Entities::Single)).to be true
186
+ expect(Get::UserById.run(user.id).is_a?(Horza::Entities::Single)).to be true
187
187
  end
188
188
  end
189
189
 
@@ -194,7 +194,7 @@ describe Get do
194
194
  end
195
195
 
196
196
  it 'returns a dynamically generated response entity' do
197
- expect(Get::UserBy.run(last_name: last_name).is_a?(Get::Entities::Single)).to be true
197
+ expect(Get::UserBy.run(last_name: last_name).is_a?(Horza::Entities::Single)).to be true
198
198
  end
199
199
  end
200
200
  end
@@ -224,7 +224,7 @@ describe Get do
224
224
  end
225
225
 
226
226
  it 'returns a dynamically generated response entity' do
227
- expect(Get::UsersByLastName.run(last_name).is_a?(Get::Entities::Collection)).to be true
227
+ expect(Get::UsersByLastName.run(last_name).is_a?(Horza::Entities::Collection)).to be true
228
228
  end
229
229
  end
230
230
 
@@ -235,7 +235,7 @@ describe Get do
235
235
  end
236
236
 
237
237
  it 'returns a dynamically generated response entity' do
238
- expect(Get::UsersBy.run(last_name: last_name).is_a?(Get::Entities::Collection)).to be true
238
+ expect(Get::UsersBy.run(last_name: last_name).is_a?(Horza::Entities::Collection)).to be true
239
239
  end
240
240
  end
241
241
  end
@@ -314,7 +314,7 @@ end
314
314
  describe Get::Builders::AncestryBuilder do
315
315
  let(:name) { 'UserFromEmployer' }
316
316
 
317
- before { Get.configure { |config| config.adapter = :active_record } }
317
+ before { Get.configure { |config| config.set_adapter(:active_record) } }
318
318
  after { Get.reset }
319
319
 
320
320
  subject { Get::Builders::AncestryBuilder.new(name) }
@@ -335,7 +335,7 @@ end
335
335
  describe Get::Builders::QueryBuilder do
336
336
  let(:name) { 'UserFromEmployer' }
337
337
 
338
- before { Get.configure { |config| config.adapter = :active_record } }
338
+ before { Get.configure { |config| config.set_adapter(:active_record) } }
339
339
  after { Get.reset }
340
340
 
341
341
  subject { Get::Builders::QueryBuilder.new(name) }
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: get
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2.1
4
+ version: 0.1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Blake Turner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-19 00:00:00.000000000 Z
11
+ date: 2015-05-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: hashie
14
+ name: horza
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 3.4.0
19
+ version: 0.0.1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 3.4.0
26
+ version: 0.0.1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -117,8 +117,6 @@ files:
117
117
  - LICENSE.txt
118
118
  - README.md
119
119
  - lib/get.rb
120
- - lib/get/adapters/abstract_adapter.rb
121
- - lib/get/adapters/active_record.rb
122
120
  - lib/get/builders.rb
123
121
  - lib/get/builders/ancestry_builder.rb
124
122
  - lib/get/builders/base_builder.rb
@@ -127,8 +125,6 @@ files:
127
125
  - lib/get/core_extensions/string.rb
128
126
  - lib/get/db.rb
129
127
  - lib/get/entities.rb
130
- - lib/get/entities/collection.rb
131
- - lib/get/entities/single.rb
132
128
  - lib/get/entity_factory.rb
133
129
  - lib/get/errors.rb
134
130
  - lib/get/run_methods.rb
@@ -1,67 +0,0 @@
1
- module Get
2
- module Adapters
3
- class AbstractAdapter
4
- attr_reader :context
5
-
6
- class << self
7
- def expected_errors
8
- not_implemented_error
9
- end
10
-
11
- def context_for_entity(entity)
12
- not_implemented_error
13
- end
14
-
15
- def entity_context_map
16
- not_implemented_error
17
- end
18
-
19
- def not_implemented_error
20
- raise ::Get::Errors::MethodNotImplemented, 'You must implement this method in your adapter.'
21
- end
22
-
23
- def descendants
24
- descendants = []
25
- ObjectSpace.each_object(singleton_class) do |k|
26
- descendants.unshift k unless k == self
27
- end
28
- descendants
29
- end
30
- end
31
-
32
- def initialize(context)
33
- @context = context
34
- end
35
-
36
- def get!(options = {})
37
- not_implemented_error
38
- end
39
-
40
- def find_first(options = {})
41
- not_implemented_error
42
- end
43
-
44
- def find_all(options = {})
45
- not_implemented_error
46
- end
47
-
48
- def ancestors(options = {})
49
- not_implemented_error
50
- end
51
-
52
- def eager_load(options = {})
53
- not_implemented_error
54
- end
55
-
56
- def to_hash
57
- not_implemented_error
58
- end
59
-
60
- private
61
-
62
- def not_implemented_error
63
- self.class.not_implemented_error
64
- end
65
- end
66
- end
67
- end
@@ -1,48 +0,0 @@
1
- module Get
2
- module Adapters
3
- class ActiveRecord < AbstractAdapter
4
- class << self
5
- def expected_errors
6
- [::ActiveRecord::RecordNotFound]
7
- end
8
-
9
- def context_for_entity(entity)
10
- entity_context_map[entity]
11
- end
12
-
13
- def entity_context_map
14
- @map ||= ::ActiveRecord::Base.descendants.reduce({}) { |hash, (klass)| hash.merge(klass.name.split('::').last.underscore.to_sym => klass) }
15
- end
16
- end
17
-
18
- def get!(options = {})
19
- @context = @context.find(options[:id])
20
- end
21
-
22
- def find_first(options = {})
23
- @context = find_all(options).limit(1).first!
24
- end
25
-
26
- def find_all(options = {})
27
- @context = @context.where(options[:conditions]).order('ID DESC')
28
- end
29
-
30
- def ancestors(options = {})
31
- get!(options)
32
- walk_family_tree(options)
33
- rescue NoMethodError
34
- raise ::Get::Errors::InvalidAncestry.new('Invalid relation. Ensure that the plurality of your associations is correct.')
35
- end
36
-
37
- def to_hash
38
- @context.attributes
39
- end
40
-
41
- private
42
-
43
- def walk_family_tree(options)
44
- options[:via].push(options[:result_key]).each { |relation| @context = @context.send(relation) }
45
- end
46
- end
47
- end
48
- end
@@ -1,39 +0,0 @@
1
- module Get
2
- module Entities
3
- class Collection
4
- def initialize(collection)
5
- @collection = collection
6
- end
7
-
8
- def each
9
- @collection.each do |result|
10
- yield singular_entity(result)
11
- end
12
- end
13
-
14
- def [](index)
15
- singular_entity(@collection[index])
16
- end
17
-
18
- private
19
-
20
- def method_missing(method)
21
- if [:length, :size, :empty?, :present?].include? method
22
- @collection.send(method)
23
- elsif [:first, :last].include? method
24
- singular_entity(@collection.send(method))
25
- end
26
- end
27
-
28
- def singular_entity(record)
29
- singular_entity_class.new(Get.adapter.new(record).to_hash)
30
- end
31
-
32
- # Collection classes have the form Get::Entities::TypesMapper
33
- # Single output requires the form Get::Entities::TypeMapper
34
- def singular_entity_class
35
- @singular_entity ||= Kernel.const_get('Get').const_get('Entities').const_get(self.class.name.demodulize.singularize)
36
- end
37
- end
38
- end
39
- end
@@ -1,13 +0,0 @@
1
- require 'hashie'
2
-
3
- module Get
4
- module Entities
5
- class Single < Hash
6
- include Hashie::Extensions::MethodAccess
7
-
8
- def initialize(attributes)
9
- update(attributes)
10
- end
11
- end
12
- end
13
- end