paper_trail-hashdiff 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/paper_trail_hashdiff.rb +25 -0
- 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: []
|