get 0.1.2.1 → 0.1.3.0

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.
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