ncore 2.3.1 → 3.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,26 @@
1
+ module NCore
2
+ module UpdateBulk
3
+ extend ActiveSupport::Concern
4
+
5
+ module ClassMethods
6
+ def bulk_update!(ids, params={})
7
+ raise(module_parent::RecordNotFound, "ids must not be empty") if ids.blank?
8
+ params = parse_request_params(params, json_root: json_root)
9
+ params[:ids] = ids
10
+ parsed, creds = request(:put, resource_path, params)
11
+ if parsed[:errors].any?
12
+ raise module_parent::BulkActionError, parsed[:errors]
13
+ else
14
+ parsed[:metadata]
15
+ end
16
+ end
17
+
18
+ def bulk_update(ids, params={})
19
+ bulk_update!(ids, params)
20
+ rescue module_parent::RecordNotFound, module_parent::BulkActionError
21
+ false
22
+ end
23
+ end
24
+
25
+ end
26
+ end
@@ -1,5 +1,3 @@
1
- require 'active_model'
2
-
3
1
  module NCore
4
2
  module ActiveModel
5
3
  extend ActiveSupport::Concern
@@ -8,12 +6,11 @@ module NCore
8
6
  include ::ActiveModel::Conversion
9
7
  extend ::ActiveModel::Naming
10
8
  extend ::ActiveModel::Translation
11
- alias :errors :errors_for_actionpack
12
9
  end
13
10
 
14
- if defined?(Rails)
11
+ if defined?(::Rails)
15
12
  def logger
16
- Rails.logger
13
+ ::Rails.logger
17
14
  end
18
15
  end
19
16
 
@@ -29,17 +26,30 @@ module NCore
29
26
  delete(*args)
30
27
  end
31
28
 
32
- # actionpack 4 requires a more robust Errors object
33
- def errors_for_actionpack
34
- e0 = ::ActiveModel::Errors.new(self)
35
- @errors.each do |e|
36
- e0.add :base, e
29
+
30
+ # compatible with ActiveRecord 5.2+ default settings
31
+ # on <= 5.1, does not include version
32
+ def cache_key(*_)
33
+ if new_record?
34
+ "#{model_name.cache_key}/new"
35
+ else
36
+ "#{model_name.cache_key}/#{id}"
37
37
  end
38
- e0
39
38
  end
40
39
 
41
- end
40
+ def cache_version
41
+ if timestamp = try(:updated_at)
42
+ timestamp.utc.to_s(:usec)
43
+ end
44
+ end
42
45
 
43
- Base.send :include, ActiveModel
44
- SingletonBase.send :include, ActiveModel
46
+ def cache_key_with_version
47
+ if version = cache_version
48
+ "#{cache_key}-#{version}"
49
+ else
50
+ cache_key
51
+ end
52
+ end
53
+
54
+ end
45
55
  end
@@ -4,6 +4,7 @@ module NCore
4
4
 
5
5
  included do
6
6
  extend Associations
7
+ include ActiveModel
7
8
  include Attributes
8
9
  include Client
9
10
  include Identity
@@ -20,13 +21,13 @@ module NCore
20
21
  include Update if types.include? :update
21
22
  end
22
23
 
23
- def url
24
+ def resource_path
24
25
  class_name.underscore
25
26
  end
26
27
  end
27
28
 
28
- def url
29
- self.class.url
29
+ def resource_path
30
+ self.class.resource_path
30
31
  end
31
32
 
32
33
  end
data/lib/ncore/util.rb CHANGED
@@ -38,10 +38,18 @@ module NCore
38
38
  end
39
39
  end
40
40
 
41
+ def factory(parsed, api_creds)
42
+ if key = (parsed[:data] || parsed)[:object]
43
+ discover_class(key, self).new(parsed, api_creds)
44
+ else
45
+ new(parsed, api_creds)
46
+ end
47
+ end
48
+
41
49
 
42
50
  private
43
51
 
44
- def discover_class(key, default_klass=parent::GenericObject)
52
+ def discover_class(key, default_klass=module_parent::GenericObject)
45
53
  klass_name = key.to_s.camelize.singularize
46
54
  begin
47
55
  "#{module_name}::#{klass_name}".constantize
@@ -54,7 +62,7 @@ module NCore
54
62
 
55
63
 
56
64
  def inspect
57
- "#<#{self.class}:0x#{self.object_id.to_s(16)}> id: #{id.inspect}, attribs: #{@attribs.except(:id).inspect}, metadata: #{metadata.inspect}"
65
+ "#<#{self.class}:0x#{'%016x'%self.object_id} id: #{id.inspect}, attribs: #{@attribs.except(:id).inspect}, metadata: #{metadata.inspect}>"
58
66
  end
59
67
 
60
68
  end
data/lib/ncore/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module NCore
2
- VERSION = '2.3.1'
2
+ VERSION = '3.3.0'
3
3
  end
data/ncore.gemspec CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_dependency 'activesupport', '>= 3.2', '< 6.2'
21
+ spec.add_dependency 'activemodel', '>= 5.2', '< 6.2'
22
22
  spec.add_dependency 'excon', '~> 0.32'
23
23
 
24
24
  spec.add_development_dependency "bundler", "~> 1.3"
metadata CHANGED
@@ -1,22 +1,22 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ncore
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.1
4
+ version: 3.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Notioneer Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-12-29 00:00:00.000000000 Z
11
+ date: 2021-05-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: activesupport
14
+ name: activemodel
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '3.2'
19
+ version: '5.2'
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
22
  version: '6.2'
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: '3.2'
29
+ version: '5.2'
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
32
  version: '6.2'
@@ -97,6 +97,7 @@ files:
97
97
  - lib/ncore/base.rb
98
98
  - lib/ncore/builder.rb
99
99
  - lib/ncore/client.rb
100
+ - lib/ncore/client_cache.rb
100
101
  - lib/ncore/collection.rb
101
102
  - lib/ncore/configuration.rb
102
103
  - lib/ncore/exceptions.rb
@@ -112,10 +113,10 @@ files:
112
113
  - lib/ncore/methods/find.rb
113
114
  - lib/ncore/methods/find_single.rb
114
115
  - lib/ncore/methods/update.rb
116
+ - lib/ncore/methods/update_bulk.rb
115
117
  - lib/ncore/rails/action_controller.rb
116
118
  - lib/ncore/rails/active_model.rb
117
119
  - lib/ncore/rails/log_subscriber.rb
118
- - lib/ncore/rails/module_fix.rb
119
120
  - lib/ncore/singleton_base.rb
120
121
  - lib/ncore/util.rb
121
122
  - lib/ncore/version.rb
@@ -1,17 +0,0 @@
1
- # ActiveSupport 6.0 changed :parent -> :module_parent
2
- # This eliminates deprecation messages so everything works like v5.2 and prior.
3
-
4
- module NCore
5
- module ModuleFix
6
- extend ActiveSupport::Concern
7
-
8
- included do
9
- alias :parent :module_parent
10
- end
11
-
12
- end
13
- end
14
-
15
- if Module.respond_to?(:module_parent)
16
- Module.include NCore::ModuleFix
17
- end