occams-record 0.8.1 → 0.9.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: 3e8255756485b83318f48137489d45b0dffe2a35
4
- data.tar.gz: 4b6587880995459b90027367dcb2ed7afb2c6010
3
+ metadata.gz: 011e5e6f67a6eeb9ad95fe8e314c443099e9d06c
4
+ data.tar.gz: 595a4ed16e94f1abf7fc33e32f1d067308f814fd
5
5
  SHA512:
6
- metadata.gz: 19078d98919da18c5aefc53031707c194e7a4e4de3f1804643ecd3b9df13d8bee3748e7f4e867f8d824048afda783ef1fbf0488456aa50bdcd4b9092f0c37121
7
- data.tar.gz: 98b93cb73bda0873486b20daec39e41b6088e5661201be53c08325982a65704577d8df4207d4ce99b5b3298fb11f113063f8183fd28258672fb52fc327ee46b4
6
+ metadata.gz: ca932af1da71d11622e5cdf077ae48b9a5114c144ed01ef4b3cd590ba06f4916ab539df201fd01fa14477239ebd78598bdd031380d87aaa73b9d5b626a2ed5ca
7
+ data.tar.gz: d8755fb3d2c0520531aaea1f7266e5420f755277a394a35138a8a7be6fe3a35c0f061bfbf479ece0900518cb50448d1847a5166eb00c98594bff07f7ada5657a
@@ -24,11 +24,11 @@ module OccamsRecord
24
24
  # @param eval_block [Proc] a block where you may perform eager loading on *this* association (optional)
25
25
  # @return [OccamsRecord::Query] returns self
26
26
  #
27
- def eager_load(assoc, scope = nil, select: nil, use: nil, &eval_block)
27
+ def eager_load(assoc, scope = nil, select: nil, use: nil, as: nil, &eval_block)
28
28
  ref = @model ? @model.reflections[assoc.to_s] : nil
29
29
  raise "OccamsRecord: No assocation `:#{assoc}` on `#{@model&.name || '<model missing>'}`" if ref.nil?
30
30
  scope ||= -> { self.select select } if select
31
- @eager_loaders << eager_loader_for_association(ref).new(ref, scope, use, &eval_block)
31
+ @eager_loaders << eager_loader_for_association(ref).new(ref, scope, use: use, as: as, &eval_block)
32
32
  self
33
33
  end
34
34
 
@@ -15,11 +15,13 @@ module OccamsRecord
15
15
  # @param ref [ActiveRecord::Association] the ActiveRecord association
16
16
  # @param scope [Proc] a scope to apply to the query (optional)
17
17
  # @param use [Array(Module)] optional Module to include in the result class (single or array)
18
+ # @param as [Symbol] Load the association into this attr instead
18
19
  # @param eval_block [Proc] a block where you may perform eager loading on *this* association (optional)
19
20
  #
20
- def initialize(ref, scope = nil, use = nil, &eval_block)
21
- @ref, @scope, @use, @eval_block = ref, scope, use, eval_block
22
- @name, @model = ref.name.to_s, ref.klass
21
+ def initialize(ref, scope = nil, use: nil, as: nil, &eval_block)
22
+ @ref, @scope, @use, @as, @eval_block = ref, scope, use, as, eval_block
23
+ @model = ref.klass
24
+ @name = (as || ref.name).to_s
23
25
  end
24
26
 
25
27
  #
@@ -13,11 +13,12 @@ module OccamsRecord
13
13
  # @param ref [ActiveRecord::Association] the ActiveRecord association
14
14
  # @param scope [Proc] a scope to apply to the query (optional)
15
15
  # @param use [Array<Module>] optional Module to include in the result class (single or array)
16
+ # @param as [Symbol] Load the association into this attr instead
16
17
  # @param eval_block [Proc] a block where you may perform eager loading on *this* association (optional)
17
18
  #
18
- def initialize(ref, scope = nil, use = nil, &eval_block)
19
+ def initialize(ref, scope = nil, use: nil, as: nil, &eval_block)
19
20
  @ref, @scope, @use, @eval_block = ref, scope, use, eval_block
20
- @name = ref.name.to_s
21
+ @name = (as || ref.name).to_s
21
22
  @foreign_type = @ref.foreign_type.to_sym
22
23
  @foreign_key = @ref.foreign_key.to_sym
23
24
  end
@@ -13,11 +13,11 @@ module OccamsRecord
13
13
  # Initialize a new Merge operation.
14
14
  #
15
15
  # @param target_rows [Array<OccamsRecord::Results::Row] the rows into which associated rows should be merged
16
- # @param assoc_name [String|Symbol] name of the attribute where associated rows will be put
16
+ # @param assoc_attr [String|Symbol] name of the attribute where associated rows will be put
17
17
  #
18
- def initialize(target_rows, assoc_name)
18
+ def initialize(target_rows, assoc_attr)
19
19
  @target_rows = target_rows
20
- @assign = "#{assoc_name}="
20
+ @assign = "#{assoc_attr}="
21
21
  end
22
22
 
23
23
  #
@@ -74,6 +74,16 @@ module OccamsRecord
74
74
 
75
75
  alias_method :to_a, :run
76
76
 
77
+ #
78
+ # Run the query and return the first result (which could be nil). This WILL append a LIMIT 1 to the query.
79
+ #
80
+ # @return [OccamsRecord::Results::Row]
81
+ #
82
+ def first
83
+ scope.limit! 1
84
+ run[0]
85
+ end
86
+
77
87
  #
78
88
  # If you pass a block, each result row will be yielded to it. If you don't,
79
89
  # an Enumerable will be returned.
@@ -97,6 +97,15 @@ module OccamsRecord
97
97
 
98
98
  alias_method :to_a, :run
99
99
 
100
+ #
101
+ # Run the query and return the first result (which could be nil). IMPORTANT you MUST add LIMIT 1 yourself!
102
+ #
103
+ # @return [OccamsRecord::Results::Row]
104
+ #
105
+ def first
106
+ run[0]
107
+ end
108
+
100
109
  #
101
110
  # If you pass a block, each result row will be yielded to it. If you don't,
102
111
  # an Enumerable will be returned.
@@ -3,5 +3,5 @@
3
3
  #
4
4
  module OccamsRecord
5
5
  # Library version
6
- VERSION = '0.8.1'.freeze
6
+ VERSION = '0.9.0'.freeze
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: occams-record
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.1
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jordan Hollinger
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-01-09 00:00:00.000000000 Z
11
+ date: 2018-01-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord