horza 0.2.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +15 -8
- data/lib/horza/entities/collection.rb +9 -7
- data/spec/active_record_spec.rb +36 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ad75669d3af7d16418b004a3c6ddea50258d8ae7
|
4
|
+
data.tar.gz: dc77c4becdffc82ff00016ad6a7f84c49be6965a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fb4f6e4a305f50191357ff2fa7aed0e962961d12f020210833d45ca0b85ecd401835fb41576d37167ee285462a7355013dfd1309cf0eeeda0c821f9384cc7857
|
7
|
+
data.tar.gz: f434ceacd8d0c426c2ab251ed547c675602599de999e10f9d2666c907742b3989b1d63ec4fbb5d6148831216df2c8339883506ac03818abcc6d55fd91ee7f1f5
|
data/README.md
CHANGED
@@ -16,8 +16,8 @@ end
|
|
16
16
|
**Get Adapter for your ORM Object**
|
17
17
|
```ruby
|
18
18
|
# ActiveRecord Example
|
19
|
-
|
20
|
-
horza_user = Horza.
|
19
|
+
# Don't worry, We don't actually call things horza_users in our codebase, this is just for emphasis
|
20
|
+
horza_user = Horza.adapt(User)
|
21
21
|
|
22
22
|
# Examples
|
23
23
|
horza_user.get(id) # Find by id - Return nil on fail
|
@@ -25,6 +25,12 @@ horza_user.get!(id) # Find by id - Error on fail
|
|
25
25
|
horza_user.find_first(params) # Find 1 user - Orders by id desc by default - Return nil on fail
|
26
26
|
horza_user.find_first!(params) # Find 1 user - Orders by id desc by default - Error nil on fail
|
27
27
|
horza_user.find_all(params) # Find all users that match parameters
|
28
|
+
horza_user.create(params) # Create record - return nil on fail
|
29
|
+
horza_user.create!(params) # Create record - raise error on fail
|
30
|
+
horza_user.update(params) # Update record - return nil on fail
|
31
|
+
horza_user.update!(params) # Update record - raise error on fail
|
32
|
+
horza_user.delete(params) # Delete record - return nil on fail
|
33
|
+
horza_user.delete!(params) # Delete record - raise error on fail
|
28
34
|
horza_user.ancestors(target: :employer, via: []) # Traverse relations
|
29
35
|
```
|
30
36
|
|
@@ -36,24 +42,25 @@ Collection entities behave like arrays.
|
|
36
42
|
|
37
43
|
```ruby
|
38
44
|
# Singular Entity
|
39
|
-
result = horza_user.find_first(first_name: 'Blake')
|
40
|
-
result.class.name # => "Horza::Entities::Single"
|
45
|
+
result = horza_user.find_first(first_name: 'Blake')
|
41
46
|
|
47
|
+
result # => {"id"=>1, "first_name"=>"Blake", "last_name"=>"Turner", "employer_id"=>1}
|
48
|
+
result.class.name # => "Horza::Entities::Single"
|
42
49
|
result['id'] # => 1
|
43
50
|
result.id # => 1
|
44
51
|
result.id? # => true
|
45
52
|
|
46
53
|
# Collection Entity
|
47
54
|
result = horza_user.find_all(last_name: 'Turner')
|
48
|
-
result.class.name # => "Horza::Entities::Collection"
|
49
55
|
|
56
|
+
result.class.name # => "Horza::Entities::Collection"
|
50
57
|
result.length # => 1
|
51
58
|
result.size # => 1
|
52
59
|
result.empty? # => false
|
53
60
|
result.present? # => true
|
54
|
-
result.first # => {"id"=>1, "first_name"=>"Blake", "last_name"=>"Turner", "employer_id"=>
|
55
|
-
result.last # => {"id"=>
|
56
|
-
result[0] # => {"id"=>1, "first_name"=>"Blake", "last_name"=>"Turner", "employer_id"=>
|
61
|
+
result.first # => {"id"=>1, "first_name"=>"Blake", "last_name"=>"Turner", "employer_id"=>1}
|
62
|
+
result.last # => {"id"=>2, "first_name"=>"Morgan", "last_name"=>"Bruce", "employer_id"=>2}
|
63
|
+
result[0] # => {"id"=>1, "first_name"=>"Blake", "last_name"=>"Turner", "employer_id"=>1}
|
57
64
|
```
|
58
65
|
|
59
66
|
## Custom Entities
|
@@ -5,23 +5,25 @@ module Horza
|
|
5
5
|
@collection = collection
|
6
6
|
end
|
7
7
|
|
8
|
-
def each
|
9
|
-
@collection.each do |result|
|
10
|
-
yield singular_entity(result)
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
8
|
def [](index)
|
15
9
|
singular_entity(@collection[index])
|
16
10
|
end
|
17
11
|
|
18
12
|
private
|
19
13
|
|
20
|
-
def method_missing(method)
|
14
|
+
def method_missing(method, &block)
|
21
15
|
if [:length, :size, :empty?, :present?].include? method
|
22
16
|
@collection.send(method)
|
23
17
|
elsif [:first, :last].include? method
|
24
18
|
singular_entity(@collection.send(method))
|
19
|
+
elsif [:each, :map, :collect]
|
20
|
+
enum_method(method, &block)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def enum_method(method, &block)
|
25
|
+
@collection.send(method) do |result|
|
26
|
+
yield singular_entity(result)
|
25
27
|
end
|
26
28
|
end
|
27
29
|
|
data/spec/active_record_spec.rb
CHANGED
@@ -300,6 +300,42 @@ describe Horza do
|
|
300
300
|
|
301
301
|
describe 'Entities' do
|
302
302
|
describe 'Collection' do
|
303
|
+
let(:members) do
|
304
|
+
3.times.map { HorzaSpec::User.create }
|
305
|
+
end
|
306
|
+
|
307
|
+
subject { Horza::Entities::Collection.new(members) }
|
308
|
+
|
309
|
+
context '#each' do
|
310
|
+
context 'when name is of ancestry type' do
|
311
|
+
it 'yields a Get::Entities::Single with each iteration' do
|
312
|
+
subject.each do |member|
|
313
|
+
expect(member.is_a? Horza::Entities::Single).to be true
|
314
|
+
end
|
315
|
+
end
|
316
|
+
end
|
317
|
+
end
|
318
|
+
|
319
|
+
context '#map' do
|
320
|
+
context 'when name is of ancestry type' do
|
321
|
+
it 'yields a Get::Entities::Single with each iteration, returns array' do
|
322
|
+
map = subject.map(&:id)
|
323
|
+
expect(map.is_a? Array).to be true
|
324
|
+
expect(map.length).to eq 3
|
325
|
+
end
|
326
|
+
end
|
327
|
+
end
|
328
|
+
|
329
|
+
context '#collect' do
|
330
|
+
context 'when name is of ancestry type' do
|
331
|
+
it 'yields a Get::Entities::Single with each iteration, returns array' do
|
332
|
+
map = subject.collect(&:id)
|
333
|
+
expect(map.is_a? Array).to be true
|
334
|
+
expect(map.length).to eq 3
|
335
|
+
end
|
336
|
+
end
|
337
|
+
end
|
338
|
+
|
303
339
|
context '#singular_entity_class' do
|
304
340
|
context 'when singular entity class does not exist' do
|
305
341
|
let(:dummy_model) { HorzaSpec::DummyModel.create }
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: horza
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
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-
|
11
|
+
date: 2015-06-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: hashie
|