pg_random_id 1.0.0 → 1.0.1
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 +7 -0
- data/lib/pg_random_id/sql/keytable.sql +26 -6
- data/lib/pg_random_id/version.rb +1 -1
- data/spec/spec_helper.rb +3 -0
- data/spec/sql/keytable_spec.rb +22 -0
- metadata +9 -22
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: df94e62bb3e5030a92bfcd23854079f7698587f7
|
4
|
+
data.tar.gz: 1f468142694c905c84f8e5683476e5c1ca1c4dae
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 74e0582ccab04dea4c1ffb12b30a9f7c712fbc3e7cef233fb01d016fdb56a7ef417b10b0451dc18b5eff5de0d7b1514709c0af1c18084606bf3079e8ad512067
|
7
|
+
data.tar.gz: a73bd3b7cfbd08f8416d2fe6b229e4a60de05310edecabbc88c450bdc275fdec55a95a69cdb10a095347a3f7b977614daa5d0dcebfc299d087b4afe5aa2d0547
|
@@ -4,15 +4,37 @@ CREATE TABLE pri_keys (
|
|
4
4
|
sequence regclass PRIMARY KEY,
|
5
5
|
key integer NOT NULL);
|
6
6
|
|
7
|
+
CREATE OR REPLACE FUNCTION
|
8
|
+
pri_random_key() RETURNS integer
|
9
|
+
LANGUAGE sql
|
10
|
+
VOLATILE
|
11
|
+
AS $$
|
12
|
+
SELECT trunc(random() * 2^15)::integer;
|
13
|
+
$$;
|
14
|
+
|
15
|
+
CREATE OR REPLACE FUNCTION
|
16
|
+
pri_key(_sequence regclass) RETURNS integer
|
17
|
+
LANGUAGE plpgsql
|
18
|
+
STRICT
|
19
|
+
AS $$
|
20
|
+
DECLARE
|
21
|
+
_key integer = key FROM pri_keys WHERE sequence = _sequence;
|
22
|
+
BEGIN
|
23
|
+
IF _key IS NULL THEN
|
24
|
+
RAISE WARNING 'key not found for sequence %, generating a random one', _sequence;
|
25
|
+
INSERT INTO pri_keys(sequence, key) VALUES (_sequence, pri_random_key()) RETURNING key INTO _key;
|
26
|
+
END IF;
|
27
|
+
RETURN _key;
|
28
|
+
END
|
29
|
+
$$;
|
30
|
+
|
7
31
|
CREATE OR REPLACE FUNCTION
|
8
32
|
pri_nextval(sequence regclass) RETURNS integer
|
9
33
|
LANGUAGE sql
|
10
34
|
VOLATILE
|
11
35
|
STRICT
|
12
36
|
AS $$
|
13
|
-
SELECT pri_scramble(
|
14
|
-
FROM pri_keys
|
15
|
-
WHERE sequence = $1;
|
37
|
+
SELECT pri_scramble(pri_key($1), nextval($1));
|
16
38
|
$$;
|
17
39
|
|
18
40
|
CREATE OR REPLACE FUNCTION
|
@@ -21,7 +43,5 @@ LANGUAGE sql
|
|
21
43
|
VOLATILE
|
22
44
|
STRICT
|
23
45
|
AS $$
|
24
|
-
SELECT lpad(crockford(pri_scramble(
|
25
|
-
FROM pri_keys
|
26
|
-
WHERE sequence = $1;
|
46
|
+
SELECT lpad(crockford(pri_scramble(pri_key($1), nextval($1))), 6, '0');
|
27
47
|
$$;
|
data/lib/pg_random_id/version.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
require 'active_record'
|
4
|
+
|
5
|
+
describe "pri_nextval(regclass)" do
|
6
|
+
include_context 'active_record'
|
7
|
+
before do
|
8
|
+
migration.create_random_id_functions
|
9
|
+
migration.create_table :foo
|
10
|
+
migration.random_id :foo
|
11
|
+
end
|
12
|
+
|
13
|
+
context "with removed key entry" do
|
14
|
+
before do
|
15
|
+
execute "DELETE FROM pri_keys"
|
16
|
+
end
|
17
|
+
|
18
|
+
it "doesn't quietly return null" do
|
19
|
+
execute("SELECT pri_nextval('foo_id_seq'::regclass)").values[0].should_not be_nil
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
metadata
CHANGED
@@ -1,20 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pg_random_id
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
5
|
-
prerelease:
|
4
|
+
version: 1.0.1
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Rafał Rzepecki
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-07-15 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: activerecord
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
17
|
- - ~>
|
20
18
|
- !ruby/object:Gem::Version
|
@@ -22,7 +20,6 @@ dependencies:
|
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
24
|
- - ~>
|
28
25
|
- !ruby/object:Gem::Version
|
@@ -30,7 +27,6 @@ dependencies:
|
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: rspec
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
31
|
- - ~>
|
36
32
|
- !ruby/object:Gem::Version
|
@@ -38,7 +34,6 @@ dependencies:
|
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
38
|
- - ~>
|
44
39
|
- !ruby/object:Gem::Version
|
@@ -46,7 +41,6 @@ dependencies:
|
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: sequel
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
45
|
- - ~>
|
52
46
|
- !ruby/object:Gem::Version
|
@@ -54,7 +48,6 @@ dependencies:
|
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
52
|
- - ~>
|
60
53
|
- !ruby/object:Gem::Version
|
@@ -62,7 +55,6 @@ dependencies:
|
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: pg
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
59
|
- - ~>
|
68
60
|
- !ruby/object:Gem::Version
|
@@ -70,7 +62,6 @@ dependencies:
|
|
70
62
|
type: :development
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
66
|
- - ~>
|
76
67
|
- !ruby/object:Gem::Version
|
@@ -78,7 +69,6 @@ dependencies:
|
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: ci_reporter
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
73
|
- - ~>
|
84
74
|
- !ruby/object:Gem::Version
|
@@ -86,7 +76,6 @@ dependencies:
|
|
86
76
|
type: :development
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
80
|
- - ~>
|
92
81
|
- !ruby/object:Gem::Version
|
@@ -94,7 +83,6 @@ dependencies:
|
|
94
83
|
- !ruby/object:Gem::Dependency
|
95
84
|
name: rake
|
96
85
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
86
|
requirements:
|
99
87
|
- - ~>
|
100
88
|
- !ruby/object:Gem::Version
|
@@ -102,7 +90,6 @@ dependencies:
|
|
102
90
|
type: :development
|
103
91
|
prerelease: false
|
104
92
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
93
|
requirements:
|
107
94
|
- - ~>
|
108
95
|
- !ruby/object:Gem::Version
|
@@ -136,30 +123,30 @@ files:
|
|
136
123
|
- spec/migrations_spec.rb
|
137
124
|
- spec/spec_helper.rb
|
138
125
|
- spec/sql/crockford_spec.rb
|
126
|
+
- spec/sql/keytable_spec.rb
|
139
127
|
- spec/sql/scramble_spec.rb
|
140
128
|
homepage: https://github.com/inscitiv/pg_random_id
|
141
129
|
licenses: []
|
130
|
+
metadata: {}
|
142
131
|
post_install_message:
|
143
132
|
rdoc_options: []
|
144
133
|
require_paths:
|
145
134
|
- lib
|
146
135
|
required_ruby_version: !ruby/object:Gem::Requirement
|
147
|
-
none: false
|
148
136
|
requirements:
|
149
|
-
- -
|
137
|
+
- - '>='
|
150
138
|
- !ruby/object:Gem::Version
|
151
139
|
version: '0'
|
152
140
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
153
|
-
none: false
|
154
141
|
requirements:
|
155
|
-
- -
|
142
|
+
- - '>='
|
156
143
|
- !ruby/object:Gem::Version
|
157
144
|
version: '0'
|
158
145
|
requirements: []
|
159
146
|
rubyforge_project:
|
160
|
-
rubygems_version:
|
147
|
+
rubygems_version: 2.0.3
|
161
148
|
signing_key:
|
162
|
-
specification_version:
|
149
|
+
specification_version: 4
|
163
150
|
summary: Pseudo-random record ids in Postgres
|
164
151
|
test_files:
|
165
152
|
- spec/helpers/active_record_helper.rb
|
@@ -168,5 +155,5 @@ test_files:
|
|
168
155
|
- spec/migrations_spec.rb
|
169
156
|
- spec/spec_helper.rb
|
170
157
|
- spec/sql/crockford_spec.rb
|
158
|
+
- spec/sql/keytable_spec.rb
|
171
159
|
- spec/sql/scramble_spec.rb
|
172
|
-
has_rdoc:
|