ar_doc_store 2.0.6 → 2.1

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
  SHA256:
3
- metadata.gz: db167289226d7e1d21afe80b95fa175640d13a4d2d903e1ca43595f69f1f3465
4
- data.tar.gz: f94216574f657aed7f0378ca013c5dc7b1a5bd0c2637e2f7e36013cb3934cc46
3
+ metadata.gz: '0118efe822fe133ce4561bbb5feb3dc3640666b6f9cab8b116f041241e160594'
4
+ data.tar.gz: db55c5000a7215f5d1a3d312965f562c79c209b3446b1a630cd84ffe25a79f49
5
5
  SHA512:
6
- metadata.gz: 0f925708da6be61cd6401e1cd21e3887aeb3303d37f23a02724660c339ba88e28947c69e5c22ed84a24d1f114c8a118cd364627ca9d6710a0532cef2a694bd7b
7
- data.tar.gz: ec0c9d944668d6829d97b6f4bee64510823608e496f2f43d0158ec54f85d6b5804c054520fc95122aa130096760e5cfdea765c2a3f3dd520161793e4bccdd18b
6
+ metadata.gz: 00b523748532b1e6109e12e09941cead7a4df9b927286e82ced80d6d47bc47859e2df9ede2fcb7b77b483cd2c19470714c386cd866dfb09fb874fab9274e0753
7
+ data.tar.gz: b3020b345638f79c1ebb035d40d0ac764343a7a6caf58a94c3bbeaeceeb46570b56953adcd3fc8081eea7a5185809cc471d47973d538571fe16f9c23fd88dd15
@@ -18,9 +18,9 @@ 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 "activerecord", ">=5.2"
21
+ spec.add_dependency "activerecord", ">=6.1"
22
22
  spec.add_dependency "pg"
23
- spec.add_development_dependency "bundler", "~> 1.7"
23
+ spec.add_development_dependency "bundler", "~> 2.2"
24
24
  spec.add_development_dependency "rake", "~> 10.0"
25
25
  spec.add_development_dependency "simplecov"
26
26
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "ar_doc_store/version"
2
4
  require "ar_doc_store/storage"
3
5
  require "ar_doc_store/embedding"
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ArDocStore
2
4
  module Attributes
3
5
  class Array < Base
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ArDocStore
2
4
  module Attributes
3
5
  class Base
@@ -34,10 +36,9 @@ module ArDocStore
34
36
  attribute attribute_name, attribute_type.new, **options
35
37
  define_method "#{attribute_name}=".to_sym, -> (value) {
36
38
  value = nil if value == '' || value == ['']
37
- send :attribute=, attribute_name, value
38
- new_value = send :attribute, attribute_name
39
+ write_attribute attribute_name, value
40
+ new_value = read_attribute attribute_name
39
41
  write_store_attribute(json_column, attribute_name, new_value)
40
- new_value
41
42
  }
42
43
  end
43
44
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ArDocStore
2
4
  module Attributes
3
5
  class Boolean < Base
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ArDocStore
2
4
  module Attributes
3
5
  module CallbackSupport
@@ -18,4 +20,4 @@ module ArDocStore
18
20
  end
19
21
  end
20
22
  end
21
- end
23
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ArDocStore
2
4
  module Attributes
3
5
  class Date < Base
@@ -18,4 +20,4 @@ module ArDocStore
18
20
  end
19
21
  end
20
22
  end
21
- end
23
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ArDocStore
2
4
  module Attributes
3
5
  class Datetime < Base
@@ -18,4 +20,4 @@ module ArDocStore
18
20
  end
19
21
  end
20
22
  end
21
- end
23
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ArDocStore
2
4
  module Attributes
3
5
  class Decimal < Base
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ArDocStore
2
4
  module Attributes
3
5
  class EmbedsBase < Base
@@ -20,16 +22,20 @@ module ArDocStore
20
22
  end
21
23
 
22
24
  def create_build_method
25
+ # override in subclass
23
26
  end
24
27
 
25
28
  def create_ensure_method
29
+ # override in subclass
26
30
  end
27
31
 
28
32
  def create_attributes_method
33
+ # override in subclass
29
34
  end
30
35
 
31
36
  def create_validation
37
+ # override in subclass
32
38
  end
33
39
  end
34
40
  end
35
- end
41
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ArDocStore
2
4
  module Attributes
3
5
  class EmbedsMany < EmbedsBase
@@ -30,7 +32,7 @@ module ArDocStore
30
32
  item.parent = new_value
31
33
  end
32
34
  write_store_attribute json_column, :#{attribute}, new_value
33
- new_value
35
+ new_value
34
36
  end
35
37
  CODE
36
38
  end
@@ -66,6 +68,7 @@ module ArDocStore
66
68
  model.class_eval <<-CODE, __FILE__, __LINE__ + 1
67
69
  def #{attribute}_attributes=(values)
68
70
  return if values.blank?
71
+
69
72
  if values.respond_to?(:each)
70
73
  if values.respond_to?(:values)
71
74
  values = values.values
@@ -111,6 +114,7 @@ module ArDocStore
111
114
 
112
115
  def process_existing_model(value)
113
116
  return false unless value.key?(:id)
117
+
114
118
  model = find_model_by_value(value)
115
119
  model && destroy_or_update(model, value) or add(value)
116
120
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ArDocStore
2
4
  module Attributes
3
5
  class EmbedsOne < EmbedsBase
@@ -8,7 +10,7 @@ module ArDocStore
8
10
  attribute :#{attribute}, ArDocStore::Types::EmbedsOne.new("#{@class_name}")
9
11
  def #{attribute}
10
12
  value = send :attribute, :#{attribute}
11
- value && value.parent = self
13
+ value && value.parent = self
12
14
  value && value.embedded_as = :#{attribute}
13
15
  value
14
16
  end
@@ -18,7 +20,7 @@ module ArDocStore
18
20
  value && #{attribute}.parent = self
19
21
  value && #{attribute}.embedded_as = :#{attribute}
20
22
  write_store_attribute json_column, :#{attribute}, #{attribute}
21
- #{attribute}
23
+ #{attribute}
22
24
  end
23
25
  CODE
24
26
  end
@@ -62,8 +64,6 @@ module ArDocStore
62
64
  validate :validate_embedded_record_for_#{attribute}
63
65
  CODE
64
66
  end
65
-
66
67
  end
67
-
68
68
  end
69
69
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ArDocStore
2
4
  module Attributes
3
5
  class Enumeration < Base
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ArDocStore
2
4
  module Attributes
3
5
  class Float < Base
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ArDocStore
2
4
  module Attributes
3
5
  class Integer < Base
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ArDocStore
2
4
  module Attributes
3
5
  class String < Base
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'securerandom'
2
4
 
3
5
  module ArDocStore
@@ -1,14 +1,18 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ArDocStore
2
4
  class EmbeddedCollection < Array
3
5
  attr_accessor :parent, :embedded_as
4
6
  def save
5
7
  parent.send :write_store_attribute, parent.json_column, embedded_as, as_json
6
8
  end
9
+
7
10
  def persist
8
11
  each &:persist
9
12
  end
13
+
10
14
  def inspect
11
15
  "ArDocStore::EmbeddedCollection - #{as_json.inspect}"
12
16
  end
13
17
  end
14
- end
18
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ArDocStore
2
4
  module Embedding
3
5
  def self.included(mod)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ArDocStore
2
4
  module Model
3
5
  def self.included(mod)
@@ -12,6 +14,7 @@ module ArDocStore
12
14
  def assign_json_data
13
15
  json_data = respond_to?(json_column) && self[json_column]
14
16
  return if json_data.blank?
17
+
15
18
  json_attributes.keys.each do |key|
16
19
  next unless json_data.key?(key)
17
20
  send :attribute=, key, json_data[key] if self.respond_to?("#{key}=")
@@ -1,8 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ArDocStore
2
4
  module Storage
3
5
 
4
6
  def self.included(mod)
5
-
6
7
  mod.class_attribute :json_column
7
8
  mod.json_column ||= :data
8
9
  mod.class_attribute :json_attributes
@@ -17,12 +18,14 @@ module ArDocStore
17
18
  type ||= options.delete(:as) || :string
18
19
  class_name = ArDocStore.mappings[type] || "ArDocStore::Attributes::#{type.to_s.classify}"
19
20
  raise "Invalid attribute type: #{class_name}" unless const_defined?(class_name)
21
+
20
22
  json_attributes[name] = class_name.constantize.build self, name, options
21
23
  end
22
24
 
23
25
  #:nodoc:
24
26
  def add_ransacker(key, predicate = nil)
25
27
  return unless respond_to?(:ransacker)
28
+
26
29
  ransacker key do |parent|
27
30
  sql = "(#{parent.table[json_column].name}->>'#{key}')"
28
31
  if predicate.present?
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ArDocStore
2
4
  module Types
3
5
  class EmbedsMany < ActiveModel::Type::Value
@@ -25,9 +27,9 @@ module ArDocStore
25
27
  end
26
28
 
27
29
  def serialize(values)
28
- if values.nil?
29
- nil
30
- elsif values.respond_to?(:each)
30
+ return if values.nil?
31
+
32
+ if values.respond_to?(:each)
31
33
  values.map { |value|
32
34
  if value.nil?
33
35
  nil
@@ -49,4 +51,4 @@ module ArDocStore
49
51
  end
50
52
  end
51
53
  end
52
- end
54
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ArDocStore
2
4
  module Types
3
5
  class EmbedsOne < ActiveModel::Type::Value
@@ -39,4 +41,4 @@ module ArDocStore
39
41
  end
40
42
  end
41
43
  end
42
- end
44
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ArDocStore
2
- VERSION = "2.0.6"
4
+ VERSION = "2.1"
3
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ar_doc_store
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.6
4
+ version: '2.1'
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Furber
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-11-21 00:00:00.000000000 Z
11
+ date: 2021-01-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '5.2'
19
+ version: '6.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: '5.2'
26
+ version: '6.1'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: pg
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '1.7'
47
+ version: '2.2'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '1.7'
54
+ version: '2.2'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -135,7 +135,7 @@ homepage: https://github.com/dfurber/ar_doc_store
135
135
  licenses:
136
136
  - MIT
137
137
  metadata: {}
138
- post_install_message:
138
+ post_install_message:
139
139
  rdoc_options: []
140
140
  require_paths:
141
141
  - lib
@@ -150,9 +150,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
150
150
  - !ruby/object:Gem::Version
151
151
  version: '0'
152
152
  requirements: []
153
- rubyforge_project:
154
- rubygems_version: 2.7.7
155
- signing_key:
153
+ rubygems_version: 3.1.4
154
+ signing_key:
156
155
  specification_version: 4
157
156
  summary: A document storage gem meant for ActiveRecord PostgresQL JSON storage.
158
157
  test_files: