neo4j 5.2.3 → 5.2.5

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: 6857fc3946f80bb498ef99f5e77ad04aae7780d2
4
- data.tar.gz: 4544f2e9fe135d5d7c53d1122c13d14250d1ff32
3
+ metadata.gz: 662aa756b654f9c55878f640b07a1df6438c1b59
4
+ data.tar.gz: 7b88ef87ef0ba7e99722f1f398ea3b9efdc1a141
5
5
  SHA512:
6
- metadata.gz: 4aae1286a0007a42f95f55f0828cfc1e3ca9981510689df6d86f352c1aefea12a894c056631383367545be5aaf8e39e1c27d8dc2dc40e065d9020472283492e3
7
- data.tar.gz: b495f1ae8518b65121f2c99a8bd2725a50ca7ea0fc60e416a84ef464b579ab9dce979aca5273f6fb758d1897d04ffeb0fbb211cacdba82f2f3f11b7d59ffce35
6
+ metadata.gz: 1c6664caf99d0bd2434668c0429583b16fba18565be3289d8f2e92161eff21784ad124cf716570e910493c23bfb7306e1ad5604a64504d047ccad30d9d01b6c9
7
+ data.tar.gz: a87e1bf6c26ebb37891e7210e4c37a2c14a848eb1257bec1aa5791d302ebffc9e846074c892dd3d12917277938568c9e3a956dde023bc7dbf04374d83e511bfd
@@ -5,6 +5,22 @@ This project adheres to [Semantic Versioning](http://semver.org/).
5
5
 
6
6
  ## [Unreleased][unreleased]
7
7
 
8
+ ## [5.2.5] - 09-11-2015
9
+
10
+ ### Fixed
11
+
12
+ - Regression in last release caused properties to revert to default on update if not present in the properties for update
13
+
14
+ ## [5.2.4] - 09-11-2015
15
+
16
+ ### Fixed
17
+ - Use `debug` log level for query logging
18
+ - `updated_at` properties were not being added up `update` events, only updated.
19
+ - Default values of Boolean properties were not being set when `default: false`
20
+ - `props_for_update` was using String keys instead of Symbols, like `props_for_update`
21
+ - `props_for_create` and `props_for_update` were not adding default property values to the hash.
22
+ - ActiveNode's `merge` and `find_or_create` methods were not setting default values of declared properties when `ON CREATE` was triggered. The code now uses `props_for_create`.
23
+
8
24
  ## [5.2.3] - 09-07-2015
9
25
 
10
26
  Added bugfixes from 5.1.4 and 5.1.5 that were missed in earlier 5.2.x releases:
@@ -30,6 +46,10 @@ Added bugfixes from 5.1.4 and 5.1.5 that were missed in earlier 5.2.x releases:
30
46
  - Added `record_timestamps` configuration do default all `ActiveNode` and `ActiveRel` models to have `created_at` and `updated_at` timestamps (from #939, thanks @rebecca-eakins)
31
47
  - Added `timestamp_type` configuration to specify how timestamps should be stored (from #939, thanks @rebecca-eakins)
32
48
 
49
+ ### Changed
50
+ - Methods related to basic node and rel persistence (`save`, `create_model`, `_create_node`, others) were refactored to make the processes simpler, clearer, and slightly faster.
51
+ - Unit test directory structure was rearranged to mirror the `lib` directory.
52
+
33
53
  ## [5.1.3] - 08-23-2015
34
54
 
35
55
  ### Fixed
@@ -63,6 +63,11 @@ module Neo4j::ActiveNode
63
63
  self.class.neo4j_session.create_node(node_props, labels)
64
64
  end
65
65
 
66
+ # As the name suggests, this inserts the primary key (id property) into the properties hash.
67
+ # The method called here, `default_property_values`, is a holdover from an earlier version of the gem. It does NOT
68
+ # contain the default values of properties, it contains the Default Property, which we now refer to as the ID Property.
69
+ # It will be deprecated and renamed in a coming refactor.
70
+ # @param [Hash] converted_props A hash of properties post-typeconversion, ready for insertion into the DB.
66
71
  def inject_primary_key!(converted_props)
67
72
  self.class.default_property_values(self).tap do |destination_props|
68
73
  destination_props.merge!(converted_props) if converted_props.is_a?(Hash)
@@ -148,29 +153,11 @@ module Neo4j::ActiveNode
148
153
  private
149
154
 
150
155
  def on_create_props(find_attributes)
151
- {id_property_name => id_prop_val(find_attributes)}.tap do |props|
152
- now = DateTime.now.to_i
153
- set_props_timestamp!('created_at', props, now)
154
- set_props_timestamp!('updated_at', props, now)
155
- end
156
- end
157
-
158
- # The process of creating custom id_property values is different from auto uuids. This adapts to that, calls the appropriate method,
159
- # and raises an error if it fails.
160
- def id_prop_val(find_attributes)
161
- custom_uuid_method = id_property_info[:type][:on]
162
- id_prop_val = custom_uuid_method ? self.new(find_attributes).send(custom_uuid_method) : default_properties[id_property_name].call
163
- fail 'Unable to create custom id property' if id_prop_val.nil?
164
- id_prop_val
156
+ find_attributes.merge(self.new(find_attributes).props_for_create)
165
157
  end
166
158
 
167
159
  def on_match_props
168
- set_props_timestamp!('updated_at')
169
- end
170
-
171
- def set_props_timestamp!(key_name, props = {}, stamp = DateTime.now.to_i)
172
- props[key_name.to_sym] = stamp if attributes_nil_hash.key?(key_name)
173
- props
160
+ {}.tap { |props| props[:updated_at] = DateTime.now.to_i if attributes_nil_hash.key?('updated_at'.freeze) }
174
161
  end
175
162
  end
176
163
  end
@@ -27,8 +27,8 @@ module Neo4j::ActiveNode
27
27
 
28
28
  def contains_association?(attributes)
29
29
  return false unless attributes
30
-
31
- attributes.each_key.any?(&method(:association_key?))
30
+ attributes.each_key { |k| return true if association_key?(k) }
31
+ false
32
32
  end
33
33
 
34
34
  # All keys which could be association setter methods (including _id/_ids)
@@ -79,7 +79,7 @@ module Neo4j
79
79
  Neo4j::Core::Query.pretty_cypher = Neo4j::Config[:pretty_logged_cypher_queries]
80
80
 
81
81
  Neo4j::Server::CypherSession.log_with do |message|
82
- (Neo4j::Config[:logger] || Rails.logger).info message
82
+ (Neo4j::Config[:logger] || Rails.logger).debug message
83
83
  end
84
84
 
85
85
  @neo4j_cypher_logging_registered = true
@@ -24,7 +24,7 @@ module Neo4j::Shared
24
24
  @_attributes_string_map = nil
25
25
  registered_properties[property.name] = property
26
26
  register_magic_typecaster(property) if property.magic_typecaster
27
- declared_property_defaults[property.name] = property.default_value if property.default_value
27
+ declared_property_defaults[property.name] = property.default_value if !property.default_value.nil?
28
28
  end
29
29
 
30
30
  # The :default option in Neo4j::ActiveNode#property class method allows for setting a default value instead of
@@ -27,6 +27,7 @@ module Neo4j::Shared
27
27
  inject_timestamps!
28
28
  converted_props = props_for_db(props)
29
29
  inject_classname!(converted_props)
30
+ inject_defaults!(converted_props)
30
31
  return converted_props unless self.class.respond_to?(:default_property_values)
31
32
  inject_primary_key!(converted_props)
32
33
  end
@@ -35,7 +36,9 @@ module Neo4j::Shared
35
36
  def props_for_update
36
37
  update_magic_properties
37
38
  changed_props = attributes.select { |k, _| changed_attributes.include?(k) }
39
+ changed_props.symbolize_keys!
38
40
  props_for_db(changed_props)
41
+ inject_defaults!(changed_props)
39
42
  end
40
43
 
41
44
  # Convenience method to set attribute and #save at the same time
@@ -193,7 +196,7 @@ module Neo4j::Shared
193
196
  end
194
197
 
195
198
  def update_magic_properties
196
- self.updated_at = DateTime.now if respond_to?(:updated_at=) && changed? && !updated_at_changed?
199
+ self.updated_at = DateTime.now if respond_to?(:updated_at=) && (updated_at.nil? || (changed? && !updated_at_changed?))
197
200
  end
198
201
 
199
202
  # Inserts the _classname property into an object's properties during object creation.
@@ -213,6 +216,13 @@ module Neo4j::Shared
213
216
  self.updated_at ||= now if respond_to?(:updated_at=)
214
217
  end
215
218
 
219
+ def inject_defaults!(properties)
220
+ self.class.declared_property_manager.declared_property_defaults.each_pair do |k, v|
221
+ properties[k.to_sym] = v if send(k).nil?
222
+ end
223
+ properties
224
+ end
225
+
216
226
  def set_timestamps
217
227
  warning = 'This method has been replaced with `inject_timestamps!` and will be removed in a future version'.freeze
218
228
  ActiveSupport::Deprecation.warn warning, caller
@@ -1,3 +1,3 @@
1
1
  module Neo4j
2
- VERSION = '5.2.3'
2
+ VERSION = '5.2.5'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: neo4j
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.2.3
4
+ version: 5.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andreas Ronge, Brian Underwood, Chris Grigg
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-07 00:00:00.000000000 Z
11
+ date: 2015-09-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: orm_adapter