paper_trail-hashdiff 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/paper_trail_hashdiff.rb +25 -0
  3. metadata +72 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: c6d9379b60da6369358df9b60636ce0e1cb5a9bbfafc2731919b6c4b9b267930
4
+ data.tar.gz: e7d2930f22513518e77c0bd8d1cfa57d19c84c5a0b5e6b8ca9806dd9d404bb9a
5
+ SHA512:
6
+ metadata.gz: 21ff034bd0e33b2335a2060a74dc26e9263ac775f2d296b756868594d919ba96e1b30a4a661834676ced90b33a22552c348b7f9a23bc2b99dec14521667648c3
7
+ data.tar.gz: 5704709fb7baf3ab87a8ec35140fdef12895ac520e4e382bcf2409ac3649d45f09cdc8ff7a20037e46d0682b406cda682cb131421d4e26d456740bd17ac86876
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Allows storing only incremental changes in the object_changes column
4
+ # Uses HashDiff (https://github.com/liufengyun/hashdiff)
5
+ class PaperTrailHashDiff
6
+ def diff(changes)
7
+ diff_changes = {}
8
+ changes.each do |field, value_changes|
9
+ diff_changes[field] = HashDiff.diff(value_changes[0], value_changes[1], array_path: true)
10
+ end
11
+ diff_changes
12
+ end
13
+
14
+ def where_object_changes(version_model_class, attributes)
15
+ scope = version_model_class
16
+ attributes.each do |k, v|
17
+ scope = scope.where('(((object_changes -> ?)::jsonb ->> 0)::jsonb @> ?)', k.to_s, v.to_s)
18
+ end
19
+ scope
20
+ end
21
+
22
+ def load_changeset(version)
23
+ HashWithIndifferentAccess.new(version.object_changes_deserialized)
24
+ end
25
+ end
metadata ADDED
@@ -0,0 +1,72 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: paper_trail-hashdiff
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.4
5
+ platform: ruby
6
+ authors:
7
+ - Ashwin Hegde
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-06-04 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: hashdiff
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.3'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rubocop
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.56'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.56'
41
+ description: Allows storing only incremental changes in the object_changes column
42
+ email: ashwin.hegde12@gmail.com
43
+ executables: []
44
+ extensions: []
45
+ extra_rdoc_files: []
46
+ files:
47
+ - lib/paper_trail_hashdiff.rb
48
+ homepage: https://github.com/hashwin/paper_trail-hashdiff
49
+ licenses:
50
+ - MIT
51
+ metadata: {}
52
+ post_install_message:
53
+ rdoc_options: []
54
+ require_paths:
55
+ - lib
56
+ required_ruby_version: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ required_rubygems_version: !ruby/object:Gem::Requirement
62
+ requirements:
63
+ - - ">="
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ requirements: []
67
+ rubyforge_project:
68
+ rubygems_version: 2.7.6
69
+ signing_key:
70
+ specification_version: 4
71
+ summary: Paper Trail Hashdiff
72
+ test_files: []