rails_surrogate_key_logging 0.3.0 → 0.5.0

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: 2e6e90f9c083df089f9b7cee7d45bddb3e27cc8b6f33ca926810a5006c374f40
4
- data.tar.gz: 942657d9c5b766de9b879071a79e1bd7a5928c9d371a7a015174499875a52238
3
+ metadata.gz: ea4b88c12da4f0ec6f5a7820dcfc828c86441c02ea4556a99b6d6ce9d6d2f36b
4
+ data.tar.gz: 86ab606742802c48b10f8a15f4cfee779871b2ef6fd76aab6b778f38a951368c
5
5
  SHA512:
6
- metadata.gz: ec95153a37880c2f9421595e32c840bf0ac292785f83f2cd59f0358767cc673e53918dbde9e7999511282ccd5db8e0c787082d0b4de5915e2d8d0deb8552ebbe
7
- data.tar.gz: 7620c957e9a36efef906e4bfa8a7a68a467fff0201d2149966b33cae0da6e2cd6e67c753eff3df4dd8e2d8ccee939fb2fea5bfb3e119e44449b7b9259f41a682
6
+ metadata.gz: 5c1141c8d9b2df0fdd92db47211ed229e3f34afdbebfd9772a17ac6fcdbb6ef2df89c10e2f1a7065d2cef69c5ec7a606656c4fb4cc2782f951113097d7bc48eb
7
+ data.tar.gz: 3fac576dad21b8299f122eabea8c82cf3c35eec4fd299f9d0bfcab456ec6c56fc0719062b60a1466f1be7b1366ce4cf8590e2892c147055725de73cd2c61549c
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SurrogateKeyLogging
4
+ class ApplicationRecord < ::ActiveRecord::Base
5
+ self.abstract_class = true
6
+
7
+ def self.table_name
8
+ "#{Rails.application.config.database_configuration["surrogate_key_logging_#{Rails.env}"]['database']}.#{compute_table_name}"
9
+ end
10
+
11
+ end
12
+
13
+ class << self
14
+ def table_name_prefix; end
15
+ end
16
+
17
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SurrogateKeyLogging
4
+ class Surrogate < ApplicationRecord
5
+ class << self
6
+ def hash_value(value)
7
+ Digest::SHA512.hexdigest value.to_s
8
+ end
9
+
10
+ def value_for_surrogate(surrogate)
11
+ where(key: surrogate).select(:value).first&.value
12
+ end
13
+
14
+ def surrogate_for_value(value)
15
+ where(hashed_value: hash_value(value)).select(:key).first&.key
16
+ end
17
+
18
+ def add(surrogate, value)
19
+ s = new(key: surrogate, value: value, hashed_value: hash_value(value))
20
+ s.save
21
+ end
22
+
23
+ def use(surrogate)
24
+ where(key: surrogate).touch_all
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,15 @@
1
+ <%=
2
+ YAML.load(
3
+ ERB.new(
4
+ File.read(
5
+ Rails.root.join('config', 'database.yml')
6
+ ),
7
+ nil, nil, '__dummy_config_database_yml_erbout__'
8
+ ).result(binding)
9
+ ).inject({}) do |memo, conf|
10
+ k, v = conf
11
+ memo[k.sub(Regexp.new("^surrogate_key_logging_"),'')] = v if k.starts_with?("surrogate_key_logging_")
12
+
13
+ memo
14
+ end.to_yaml
15
+ %>
@@ -0,0 +1,13 @@
1
+ class CreateSurrogates < ActiveRecord::Migration[6.0]
2
+ def change
3
+ create_table :surrogates, id: false, options: 'ENGINE=InnoDB, CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci' do |t|
4
+ t.string :key, primary_key: true, null: false
5
+ t.text :value, limit: 4294967295, null: false
6
+ t.string :hashed_value, null: false
7
+
8
+ t.datetime :updated_at, null: false
9
+ end
10
+ add_index :surrogates, :key, unique: true
11
+ add_index :surrogates, :hashed_value, unique: true
12
+ end
13
+ end
@@ -4,7 +4,7 @@ module SurrogateKeyLogging
4
4
 
5
5
  module Version
6
6
  MAJOR = 0
7
- MINOR = 3
7
+ MINOR = 5
8
8
  PATCH = 0
9
9
 
10
10
  end
@@ -21,7 +21,7 @@ Gem::Specification.new do |s|
21
21
  'rubygems_mfa_required' => 'true',
22
22
  }
23
23
 
24
- s.files = Dir['lib/**/*', 'README.md', 'MIT-LICENSE', 'rails_surrogate_key_logging.gemspec']
24
+ s.files = Dir['app/**/*', 'lib/**/*', 'config/**/*', 'db/**/*', 'README.md', 'MIT-LICENSE', 'rails_surrogate_key_logging.gemspec']
25
25
 
26
26
  s.require_paths = %w[ lib ]
27
27
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_surrogate_key_logging
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Taylor Yelverton
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-02-24 00:00:00.000000000 Z
11
+ date: 2023-03-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionpack
@@ -97,6 +97,10 @@ extensions: []
97
97
  extra_rdoc_files: []
98
98
  files:
99
99
  - README.md
100
+ - app/models/surrogate_key_logging/application_record.rb
101
+ - app/models/surrogate_key_logging/surrogate.rb
102
+ - config/database.yml
103
+ - db/migrate/20230119211745_create_surrogates.rb
100
104
  - lib/rails_surrogate_key_logging.rb
101
105
  - lib/surrogate_key_logging.rb
102
106
  - lib/surrogate_key_logging/action_controller.rb