activerecord-postgres_enum 0.5.2 → 0.6.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:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 2e43929712c3569c4b839d4c3464681e4841faf269e669ecb87ce36866b079ac
|
|
4
|
+
data.tar.gz: 25a312a9bab4f9af1c69b5e4ae39826053da9e0757be8cab4dbb96ce3549288a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: af99b8890d255f425db4ad5b013c10ec88dac286b56286cd08a78ef519935032bf6b0ed53b65402e1cdc3fbaf7df73094f0febfca08d189a26ec6919b3ff9d78
|
|
7
|
+
data.tar.gz: 066a1f40435ea2e4ecde9384bb6ef21cdf5e4175bc2fbe4f2a0b221f26a4a598b2cc7c9e2c7c1d2bce532263a9d39c9c5c7bf9564627450d65b6a5d20db4917a
|
data/README.md
CHANGED
|
@@ -53,13 +53,13 @@ rename_enum :mood, :emotions
|
|
|
53
53
|
To add a value into existing enum:
|
|
54
54
|
|
|
55
55
|
```ruby
|
|
56
|
-
add_enum_value :mood, "
|
|
56
|
+
add_enum_value :mood, "pensive"
|
|
57
57
|
```
|
|
58
58
|
|
|
59
59
|
To rename a value:
|
|
60
60
|
|
|
61
61
|
```ruby
|
|
62
|
-
rename_enum_value :mood, "
|
|
62
|
+
rename_enum_value :mood, "pensive", "wistful"
|
|
63
63
|
```
|
|
64
64
|
|
|
65
65
|
## Development
|
|
@@ -24,7 +24,11 @@ module ActiveRecord
|
|
|
24
24
|
end
|
|
25
25
|
|
|
26
26
|
DEFINED_ENUMS_QUERY = <<~SQL
|
|
27
|
-
SELECT
|
|
27
|
+
SELECT
|
|
28
|
+
t.OID,
|
|
29
|
+
t.typname,
|
|
30
|
+
t.typtype,
|
|
31
|
+
array_to_string(array_agg(e.enumlabel ORDER BY e.enumsortorder), '\t\t', '') as enumlabels
|
|
28
32
|
FROM pg_type t
|
|
29
33
|
LEFT JOIN pg_enum e ON e.enumtypid = t.oid
|
|
30
34
|
WHERE typtype = 'e'
|
|
@@ -34,12 +38,12 @@ module ActiveRecord
|
|
|
34
38
|
|
|
35
39
|
def enums
|
|
36
40
|
select_all(DEFINED_ENUMS_QUERY).each_with_object({}) do |row, memo|
|
|
37
|
-
memo[row["typname"].to_sym] = row['enumlabels'].
|
|
41
|
+
memo[row["typname"].to_sym] = row['enumlabels'].split("\t\t")
|
|
38
42
|
end
|
|
39
43
|
end
|
|
40
44
|
|
|
41
45
|
def create_enum(name, values)
|
|
42
|
-
values = values.map { |v|
|
|
46
|
+
values = values.map { |v| quote v }
|
|
43
47
|
execute "CREATE TYPE #{name} AS ENUM (#{values.join(', ')})"
|
|
44
48
|
end
|
|
45
49
|
|
|
@@ -51,14 +55,20 @@ module ActiveRecord
|
|
|
51
55
|
execute "ALTER TYPE #{name} RENAME TO #{new_name}"
|
|
52
56
|
end
|
|
53
57
|
|
|
54
|
-
def add_enum_value(name, value)
|
|
55
|
-
|
|
58
|
+
def add_enum_value(name, value, after: nil, before: nil)
|
|
59
|
+
sql = "ALTER TYPE #{name} ADD VALUE #{quote value}"
|
|
60
|
+
if after
|
|
61
|
+
sql += " AFTER #{quote after}"
|
|
62
|
+
elsif before
|
|
63
|
+
sql += " BEFORE #{quote before}"
|
|
64
|
+
end
|
|
65
|
+
execute sql
|
|
56
66
|
end
|
|
57
67
|
|
|
58
68
|
def rename_enum_value(name, existing_value, new_value)
|
|
59
69
|
raise "Renaming enum values is only supported in PostgreSQL 10.0+" unless rename_enum_value_supported?
|
|
60
70
|
|
|
61
|
-
execute "ALTER TYPE #{name} RENAME VALUE
|
|
71
|
+
execute "ALTER TYPE #{name} RENAME VALUE #{quote existing_value} TO #{quote new_value}"
|
|
62
72
|
end
|
|
63
73
|
|
|
64
74
|
def migration_keys
|
|
@@ -16,8 +16,8 @@ module ActiveRecord
|
|
|
16
16
|
statements = []
|
|
17
17
|
|
|
18
18
|
@connection.enums.each do |name, values|
|
|
19
|
-
values = values.map
|
|
20
|
-
statements << " create_enum #{name.inspect}, [#{values}]"
|
|
19
|
+
values = values.map { |v| " #{v.inspect}," }.join("\n")
|
|
20
|
+
statements << " create_enum #{name.inspect}, [\n#{values}\n ]"
|
|
21
21
|
end
|
|
22
22
|
|
|
23
23
|
stream.puts statements.join("\n")
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: activerecord-postgres_enum
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.6.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Michael Merkushin
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2019-
|
|
11
|
+
date: 2019-06-14 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activerecord
|
|
@@ -100,14 +100,14 @@ dependencies:
|
|
|
100
100
|
requirements:
|
|
101
101
|
- - "~>"
|
|
102
102
|
- !ruby/object:Gem::Version
|
|
103
|
-
version: '
|
|
103
|
+
version: '12.3'
|
|
104
104
|
type: :development
|
|
105
105
|
prerelease: false
|
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
|
107
107
|
requirements:
|
|
108
108
|
- - "~>"
|
|
109
109
|
- !ruby/object:Gem::Version
|
|
110
|
-
version: '
|
|
110
|
+
version: '12.3'
|
|
111
111
|
- !ruby/object:Gem::Dependency
|
|
112
112
|
name: rspec-rails
|
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|