typed_uuid 1.0 → 2.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5c5433e604f5994bc1cb5787813f0948c7b1c5448aa6e78b61e0d5a5dec056bc
4
- data.tar.gz: f38b7f09d39467074e06c62e7edb28f34b1426b1f089e61b31457d6a79f002dc
3
+ metadata.gz: c9f8cc6a9d2e7768a94386004a4e36062d225eccb9671525d338e7e1b49b5a58
4
+ data.tar.gz: 383fad6086cdd955c79a85efe0f408b27d1b4ed4fa8c586bda2ec02c501ac2ce
5
5
  SHA512:
6
- metadata.gz: d5b2fc14ab95352601cdd86218d0594399f6bf838a3bb097a50996536ba1ac41dc1b44398fc1e342c743854069b8120800a80f1067b16922966c244a31fd0c9c
7
- data.tar.gz: 561171c47297962e4c0ac880d7515f3fffafabbb07e606f3d551acc080476bab505496994de79296025f179615f868294b1b410a0eda9c96880135980a1805af
6
+ metadata.gz: 1442e2de994415398ba67ad9ba28ae491985d297303d8351d4472cf6a0bfa17e687ede6e15b0152066843cbcf987f86f569bdeaca29c09abc9744e14d49ea6fc
7
+ data.tar.gz: f923a8e624f697f0043edd593a0fde9801744769f849a52e8d6f443f96b70e143d2ac208482c18347fcfab403afe41d8c0301ad71db73fc2a765810bb499e1e2
data/.gitignore CHANGED
@@ -1,3 +1,4 @@
1
1
  coverage
2
2
  *.gem
3
3
  .byebug_history
4
+ Gemfile.lock
data/README.md CHANGED
@@ -13,18 +13,18 @@ Where:
13
13
  - N is 3 bits and is the Variant of the Version followed a bit
14
14
 
15
15
  We modify this and use the following structure where the 7th & 8th bytes in the
16
- UUID are enum XORed with bytes 5 & 6.
16
+ UUID are enum XORed with the result of XORing bytes 5 & 6 with bytes 9 & 10.
17
17
 
18
- `xxxxxxxx-YYYY-TTTT-xxxx-xxxxxxxxxxxx`
18
+ `xxxxxxxx-YYYY-TTTT-ZZZZ-xxxxxxxxxxxx`
19
19
 
20
20
  Where:
21
21
 
22
- - TTTT is the Class ENUM 0bNNNN_NNNN_NNNN_NNNN (0 - 65,535) XORed with YYYY
23
- - YYYY are the bytes to be XORed with the Class ENUM to produce the identifying
24
- bytes
22
+ - TTTT is the Type ENUM 0bNNNN_NNNN_NNNN_NNNN (0 - 65,535) XORed with (YYYY xor ZZZZ)
23
+ - YYYY bytes XORed with ZZZZ and the Type ENUM to produce the identifying bytes
24
+ - ZZZZ bytes XORed with YYYY and the Type ENUM to produce the identifying bytes
25
25
 
26
- XORing bytes 7 & 8 with bytes 5 & 6 of the Typed UUID will give us back the ENUM
27
- of the Type using soley the UUID.
26
+ XORing bytes 5 & 6 with 9 & 10 and XORing again with bytes 5 & 6 of the Typed UUID
27
+ will give us back the ENUM of the Type using soley the UUID.
28
28
 
29
29
  ## Install
30
30
 
@@ -8,8 +8,8 @@ class AddTypedUuidFunction < ActiveRecord::Migration[6.0]
8
8
  bytes bytea := gen_random_bytes(16);
9
9
  uuid bytea;
10
10
  BEGIN
11
- bytes := set_byte(bytes, 6, get_byte(bytes, 4) # get_byte(t, 0));
12
- bytes := set_byte(bytes, 7, get_byte(bytes, 5) # get_byte(t, 1));
11
+ bytes := set_byte(bytes, 6, (get_byte(bytes, 4) # get_byte(bytes, 8)) # get_byte(t, 0));
12
+ bytes := set_byte(bytes, 7, (get_byte(bytes, 5) # get_byte(bytes, 9)) # get_byte(t, 1));
13
13
  RETURN encode( bytes, 'hex') :: uuid;
14
14
  END;
15
15
  $$ LANGUAGE plpgsql;
@@ -61,7 +61,7 @@ module TypedUUID::ActiveRecord
61
61
 
62
62
  def class_from_uuid(uuid)
63
63
  uuid = uuid.gsub('-', '')
64
- class_from_uuid_type(uuid[8..11].to_i(16) ^ uuid[12..15].to_i(16))
64
+ class_from_uuid_type((uuid[8..11].to_i(16) ^ uuid[16..19].to_i(16)) ^ uuid[12..15].to_i(16))
65
65
  end
66
66
 
67
67
  end
@@ -1,3 +1,3 @@
1
1
  module TypedUUID
2
- VERSION = '1.0'
2
+ VERSION = '2.0'
3
3
  end
data/test/test_helper.rb CHANGED
@@ -19,7 +19,7 @@ require 'active_record'
19
19
  require 'rails'
20
20
  require 'typed_uuid'
21
21
  require 'typed_uuid/railtie'
22
- require File.expand_path('../../db/migrate/20191122234546_add_typed_uuid_function', __FILE__)
22
+ require File.expand_path('../../db/migrate/20191222234546_add_typed_uuid_function', __FILE__)
23
23
 
24
24
  module ActiveRecord::Tasks::DatabaseTasks
25
25
  def migrations_paths
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: typed_uuid
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.0'
4
+ version: '2.0'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jon Bracy
@@ -174,7 +174,6 @@ files:
174
174
  - ".gitignore"
175
175
  - ".tm_properties"
176
176
  - Gemfile
177
- - Gemfile.lock
178
177
  - LICENSE
179
178
  - README.md
180
179
  - Rakefile
data/Gemfile.lock DELETED
@@ -1,168 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- typed_uuid (0.1)
5
- activerecord (>= 6.0.0)
6
- pg
7
-
8
- GEM
9
- remote: https://rubygems.org/
10
- specs:
11
- actioncable (6.0.2.1)
12
- actionpack (= 6.0.2.1)
13
- nio4r (~> 2.0)
14
- websocket-driver (>= 0.6.1)
15
- actionmailbox (6.0.2.1)
16
- actionpack (= 6.0.2.1)
17
- activejob (= 6.0.2.1)
18
- activerecord (= 6.0.2.1)
19
- activestorage (= 6.0.2.1)
20
- activesupport (= 6.0.2.1)
21
- mail (>= 2.7.1)
22
- actionmailer (6.0.2.1)
23
- actionpack (= 6.0.2.1)
24
- actionview (= 6.0.2.1)
25
- activejob (= 6.0.2.1)
26
- mail (~> 2.5, >= 2.5.4)
27
- rails-dom-testing (~> 2.0)
28
- actionpack (6.0.2.1)
29
- actionview (= 6.0.2.1)
30
- activesupport (= 6.0.2.1)
31
- rack (~> 2.0, >= 2.0.8)
32
- rack-test (>= 0.6.3)
33
- rails-dom-testing (~> 2.0)
34
- rails-html-sanitizer (~> 1.0, >= 1.2.0)
35
- actiontext (6.0.2.1)
36
- actionpack (= 6.0.2.1)
37
- activerecord (= 6.0.2.1)
38
- activestorage (= 6.0.2.1)
39
- activesupport (= 6.0.2.1)
40
- nokogiri (>= 1.8.5)
41
- actionview (6.0.2.1)
42
- activesupport (= 6.0.2.1)
43
- builder (~> 3.1)
44
- erubi (~> 1.4)
45
- rails-dom-testing (~> 2.0)
46
- rails-html-sanitizer (~> 1.1, >= 1.2.0)
47
- activejob (6.0.2.1)
48
- activesupport (= 6.0.2.1)
49
- globalid (>= 0.3.6)
50
- activemodel (6.0.2.1)
51
- activesupport (= 6.0.2.1)
52
- activerecord (6.0.2.1)
53
- activemodel (= 6.0.2.1)
54
- activesupport (= 6.0.2.1)
55
- activestorage (6.0.2.1)
56
- actionpack (= 6.0.2.1)
57
- activejob (= 6.0.2.1)
58
- activerecord (= 6.0.2.1)
59
- marcel (~> 0.3.1)
60
- activesupport (6.0.2.1)
61
- concurrent-ruby (~> 1.0, >= 1.0.2)
62
- i18n (>= 0.7, < 2)
63
- minitest (~> 5.1)
64
- tzinfo (~> 1.1)
65
- zeitwerk (~> 2.2)
66
- ansi (1.5.0)
67
- builder (3.2.4)
68
- byebug (11.0.1)
69
- concurrent-ruby (1.1.5)
70
- crass (1.0.5)
71
- docile (1.3.2)
72
- erubi (1.9.0)
73
- globalid (0.4.2)
74
- activesupport (>= 4.2.0)
75
- i18n (1.7.0)
76
- concurrent-ruby (~> 1.0)
77
- json (2.3.0)
78
- loofah (2.4.0)
79
- crass (~> 1.0.2)
80
- nokogiri (>= 1.5.9)
81
- mail (2.7.1)
82
- mini_mime (>= 0.1.1)
83
- marcel (0.3.3)
84
- mimemagic (~> 0.3.2)
85
- method_source (0.9.2)
86
- mimemagic (0.3.3)
87
- mini_mime (1.0.2)
88
- mini_portile2 (2.4.0)
89
- minitest (5.13.0)
90
- minitest-reporters (1.4.2)
91
- ansi
92
- builder
93
- minitest (>= 5.0)
94
- ruby-progressbar
95
- mocha (1.11.1)
96
- nio4r (2.5.2)
97
- nokogiri (1.10.7)
98
- mini_portile2 (~> 2.4.0)
99
- pg (1.1.4)
100
- rack (2.0.8)
101
- rack-test (1.1.0)
102
- rack (>= 1.0, < 3)
103
- rails (6.0.2.1)
104
- actioncable (= 6.0.2.1)
105
- actionmailbox (= 6.0.2.1)
106
- actionmailer (= 6.0.2.1)
107
- actionpack (= 6.0.2.1)
108
- actiontext (= 6.0.2.1)
109
- actionview (= 6.0.2.1)
110
- activejob (= 6.0.2.1)
111
- activemodel (= 6.0.2.1)
112
- activerecord (= 6.0.2.1)
113
- activestorage (= 6.0.2.1)
114
- activesupport (= 6.0.2.1)
115
- bundler (>= 1.3.0)
116
- railties (= 6.0.2.1)
117
- sprockets-rails (>= 2.0.0)
118
- rails-dom-testing (2.0.3)
119
- activesupport (>= 4.2.0)
120
- nokogiri (>= 1.6)
121
- rails-html-sanitizer (1.3.0)
122
- loofah (~> 2.3)
123
- railties (6.0.2.1)
124
- actionpack (= 6.0.2.1)
125
- activesupport (= 6.0.2.1)
126
- method_source
127
- rake (>= 0.8.7)
128
- thor (>= 0.20.3, < 2.0)
129
- rake (13.0.1)
130
- ruby-progressbar (1.10.1)
131
- simplecov (0.17.1)
132
- docile (~> 1.1)
133
- json (>= 1.8, < 3)
134
- simplecov-html (~> 0.10.0)
135
- simplecov-html (0.10.2)
136
- sprockets (4.0.0)
137
- concurrent-ruby (~> 1.0)
138
- rack (> 1, < 3)
139
- sprockets-rails (3.2.1)
140
- actionpack (>= 4.0)
141
- activesupport (>= 4.0)
142
- sprockets (>= 3.0.0)
143
- thor (1.0.1)
144
- thread_safe (0.3.6)
145
- tzinfo (1.2.5)
146
- thread_safe (~> 0.1)
147
- websocket-driver (0.7.1)
148
- websocket-extensions (>= 0.1.0)
149
- websocket-extensions (0.1.4)
150
- zeitwerk (2.2.2)
151
-
152
- PLATFORMS
153
- ruby
154
-
155
- DEPENDENCIES
156
- activesupport (>= 6.0.0)
157
- bundler
158
- byebug
159
- minitest
160
- minitest-reporters
161
- mocha
162
- rails (>= 6.0.0)
163
- rake
164
- simplecov
165
- typed_uuid!
166
-
167
- BUNDLED WITH
168
- 2.0.2