activerecord-postgres_enum 0.5.2 → 0.6.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: 4fd9c6d97f0434ff36fd04e33b64cd039ea6fc10afcc0dfb0d90728e4317e5ee
4
- data.tar.gz: 731183b8229e9c84d4bbefff1010e9825c274f93a06d0d26c5b53753ef187a54
3
+ metadata.gz: 2e43929712c3569c4b839d4c3464681e4841faf269e669ecb87ce36866b079ac
4
+ data.tar.gz: 25a312a9bab4f9af1c69b5e4ae39826053da9e0757be8cab4dbb96ce3549288a
5
5
  SHA512:
6
- metadata.gz: e12752bf700f712f6e82a473992a84a0a6d86b8d2c8931dd993bc24e80fe7251c5ef2a98e6af2094e0fe294e1562e32dde3954df3277d3eb4c11cec08bfc8fd8
7
- data.tar.gz: dc34f7be14cecd03afcea23fb279a57383296b673d7ed3721d837e394b22ac5e69e1d1944e48519099b3f56d587eddf2ceffdd0283e559b1641b261851a4932f
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, "crazy"
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, "crazy", "nutty"
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 t.OID, t.typname, t.typtype, array_agg(e.enumlabel) as enumlabels
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'].gsub(/[{}]/, '').gsub('NULL', '').split(',').sort
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| "'#{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
- execute "ALTER TYPE #{name} ADD VALUE '#{value}'"
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 '#{existing_value}' TO '#{new_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(&:inspect).join(', ')
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")
@@ -2,6 +2,6 @@
2
2
 
3
3
  module ActiveRecord
4
4
  module PostgresEnum
5
- VERSION = "0.5.2"
5
+ VERSION = "0.6.0"
6
6
  end
7
7
  end
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.5.2
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-03-19 00:00:00.000000000 Z
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: '10.0'
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: '10.0'
110
+ version: '12.3'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: rspec-rails
113
113
  requirement: !ruby/object:Gem::Requirement