torque-postgresql 2.4.0 → 2.4.2

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: 51c2e056f8b1a5bfa52339dbc7212a03fdd7f99f7fa05b11d066859ef1763f45
4
- data.tar.gz: 6b0cdc4ac793d578cc925363f331f167c80a73a1d708f68c98b2d8430b21331f
3
+ metadata.gz: 9185b34c8897975b296b43fe5585a1a62d61d02c30d204f5963bfb2b87cb74ca
4
+ data.tar.gz: ca9ec1fc2558f8d24296ac287b592e3d9b10ea41015f8c29b2c8f8a01536606c
5
5
  SHA512:
6
- metadata.gz: fd702676e2677393a1002c411380cb297f7f56b7f2bdad7317a446849accf3090b9dcd27d6b2e50b7e7c81d6299db97f3fbd190a6c21d6afca9782c575e900ba
7
- data.tar.gz: 74cbc3c504fad7ebd55249ed4339c7a2571320828faebe7a2f573b759e721febd07e05c5227759748dbde4c0e629521d167d149e65339cd3a0be855f60076b29
6
+ metadata.gz: a2c30b52f8573c6745735d3625b64f9bebd052e47b51b7ceec3a297977cebcef945d0428dc55830932e3ee6c7cd7b78c8309e090c16b7b66ed7d9559ab753a20
7
+ data.tar.gz: cbd8559012bfb7cd112e67f52e9e6fad96528bfb66bdc6e17244e8771f033cde0530a5fb51679ce264eaa7c37cc4b4db36807a93eff53cab45bab0038c20fe11
@@ -185,21 +185,20 @@ module Torque
185
185
 
186
186
  # Get the list of columns, and their definition, but only from the
187
187
  # actual table, does not include columns that comes from inherited table
188
- def column_definitions(table_name) # :nodoc:
189
- local_condition = 'AND a.attislocal IS TRUE' if @_dump_mode
188
+ def column_definitions(table_name)
189
+ local = 'AND a.attislocal' if @_dump_mode
190
+
190
191
  query(<<-SQL, 'SCHEMA')
191
- SELECT a.attname, format_type(a.atttypid, a.atttypmod),
192
- pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod,
193
- (SELECT c.collname FROM pg_collation c, pg_type t
194
- WHERE c.oid = a.attcollation AND t.oid = a.atttypid AND a.attcollation <> t.typcollation),
195
- col_description(a.attrelid, a.attnum) AS comment
196
- FROM pg_attribute a
197
- LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum
198
- WHERE a.attrelid = '#{quote_table_name(table_name)}'::regclass
199
- AND a.attnum > 0
200
- AND a.attisdropped IS FALSE
201
- #{local_condition}
202
- ORDER BY a.attnum
192
+ SELECT a.attname, format_type(a.atttypid, a.atttypmod),
193
+ pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod,
194
+ c.collname, col_description(a.attrelid, a.attnum) AS comment
195
+ FROM pg_attribute a
196
+ LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum
197
+ LEFT JOIN pg_type t ON a.atttypid = t.oid
198
+ LEFT JOIN pg_collation c ON a.attcollation = c.oid AND a.attcollation <> t.typcollation
199
+ WHERE a.attrelid = #{quote(quote_table_name(table_name))}::regclass
200
+ AND a.attnum > 0 AND NOT a.attisdropped #{local}
201
+ ORDER BY a.attnum
203
202
  SQL
204
203
  end
205
204
 
@@ -33,9 +33,9 @@ module Torque
33
33
  end
34
34
 
35
35
  # Renames a type.
36
- def rename_type(type_name, new_name)
36
+ def rename_type(type_name, new_name, options = {})
37
37
  execute <<-SQL.squish
38
- ALTER TYPE #{quote_type_name(type_name)}
38
+ ALTER TYPE #{quote_type_name(type_name, options[:schema])}
39
39
  RENAME TO #{Quoting::Name.new(nil, new_name.to_s).quoted}
40
40
  SQL
41
41
  end
@@ -102,6 +102,18 @@ module Torque
102
102
  super table_name, **options, &block
103
103
  end
104
104
 
105
+ # Simply add the schema to the table name when changing a table
106
+ def change_table(table_name, **options)
107
+ table_name = "#{options[:schema]}.#{table_name}" if options[:schema].present?
108
+ super table_name, **options
109
+ end
110
+
111
+ # Simply add the schema to the table name when dropping a table
112
+ def drop_table(table_name, **options)
113
+ table_name = "#{options[:schema]}.#{table_name}" if options[:schema].present?
114
+ super table_name, **options
115
+ end
116
+
105
117
  # Add the schema option when extracting table options
106
118
  def table_options(table_name)
107
119
  parts = table_name.split('.').reverse
@@ -127,6 +139,11 @@ module Torque
127
139
 
128
140
  private
129
141
 
142
+ # Remove the schema from the sequence name
143
+ def sequence_name_from_parts(table_name, column_name, suffix)
144
+ super(table_name.split('.').last, column_name, suffix)
145
+ end
146
+
130
147
  def quote_enum_values(name, values, options)
131
148
  prefix = options[:prefix]
132
149
  prefix = name if prefix === true
@@ -12,8 +12,8 @@ module Torque
12
12
  return @schema if defined?(@schema)
13
13
 
14
14
  @schema = ([@klass] + @klass.module_parents[0..-2]).find do |klass|
15
- next unless klass.respond_to?(:schema)
16
- break klass.schema
15
+ next unless klass.respond_to?(:schema) && !(value = klass.schema).nil?
16
+ break value
17
17
  end
18
18
  end
19
19
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Torque
4
4
  module PostgreSQL
5
- VERSION = '2.4.0'
5
+ VERSION = '2.4.2'
6
6
  end
7
7
  end
@@ -40,6 +40,26 @@ RSpec.describe 'Schema' do
40
40
  connection.schemas_whitelist.push('legacy')
41
41
  expect(connection.schema_exists?(:legacy)).to be_truthy
42
42
  end
43
+
44
+ context 'reverting' do
45
+ let(:migration) { ActiveRecord::Migration::Current.new('Testing') }
46
+
47
+ before { connection.create_schema(:legacy) }
48
+
49
+ it 'reverts the creation of a schema' do
50
+ expect(connection.schema_exists?(:legacy, filtered: false)).to be_truthy
51
+ migration.revert { migration.connection.create_schema(:legacy) }
52
+ expect(connection.schema_exists?(:legacy, filtered: false)).to be_falsey
53
+ end
54
+
55
+ it 'reverts the creation of a table' do
56
+ connection.create_table(:users, schema: :legacy) { |t| t.string(:name) }
57
+
58
+ expect(connection.table_exists?('legacy.users')).to be_truthy
59
+ migration.revert { migration.connection.create_table(:users, schema: :legacy) }
60
+ expect(connection.table_exists?('legacy.users')).to be_falsey
61
+ end
62
+ end
43
63
  end
44
64
 
45
65
  context 'on schema' do
@@ -73,12 +93,24 @@ RSpec.describe 'Schema' do
73
93
  expect(dump_result).to match /create_table \"users\",.*schema: +"internal"/
74
94
  end
75
95
  end
96
+
97
+ it 'does not affect serial ids' do
98
+ connection.create_table(:primary_keys, id: :serial) do |t|
99
+ t.string :title
100
+ end
101
+
102
+ parts = '"primary_keys", id: :serial, force: :cascade'
103
+ expect(dump_result).to match(/create_table #{parts} do /)
104
+ end
76
105
  end
77
106
 
78
107
  context 'on relation' do
79
108
  let(:model) { Internal::User }
109
+ let(:table_name) { Torque::PostgreSQL::TableName.new(model, 'users') }
80
110
 
81
111
  it 'adds the schema to the query' do
112
+ model.reset_table_name
113
+ expect(table_name.to_s).to eq('internal.users')
82
114
  expect(model.all.to_sql).to match(/FROM "internal"."users"/)
83
115
  end
84
116
 
@@ -86,7 +118,17 @@ RSpec.describe 'Schema' do
86
118
  allow(Internal).to receive(:schema).and_return('internal')
87
119
  allow(model).to receive(:schema).and_return(nil)
88
120
 
121
+ model.reset_table_name
122
+ expect(table_name.to_s).to eq('internal.users')
89
123
  expect(model.all.to_sql).to match(/FROM "internal"."users"/)
90
124
  end
125
+
126
+ it 'does not change anything if the model has not configured a schema' do
127
+ allow(model).to receive(:schema).and_return(nil)
128
+
129
+ model.reset_table_name
130
+ expect(table_name.to_s).to eq('users')
131
+ expect(model.all.to_sql).to match(/FROM "users"/)
132
+ end
91
133
  end
92
134
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: torque-postgresql
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.0
4
+ version: 2.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carlos Silva
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-12-30 00:00:00.000000000 Z
11
+ date: 2023-01-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -108,22 +108,22 @@ dependencies:
108
108
  name: rspec
109
109
  requirement: !ruby/object:Gem::Requirement
110
110
  requirements:
111
- - - ">="
112
- - !ruby/object:Gem::Version
113
- version: 3.5.0
114
111
  - - "~>"
115
112
  - !ruby/object:Gem::Version
116
113
  version: '3.5'
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: 3.5.0
117
117
  type: :development
118
118
  prerelease: false
119
119
  version_requirements: !ruby/object:Gem::Requirement
120
120
  requirements:
121
- - - ">="
122
- - !ruby/object:Gem::Version
123
- version: 3.5.0
124
121
  - - "~>"
125
122
  - !ruby/object:Gem::Version
126
123
  version: '3.5'
124
+ - - ">="
125
+ - !ruby/object:Gem::Version
126
+ version: 3.5.0
127
127
  - !ruby/object:Gem::Dependency
128
128
  name: factory_bot
129
129
  requirement: !ruby/object:Gem::Requirement
@@ -299,7 +299,7 @@ licenses:
299
299
  metadata:
300
300
  source_code_uri: https://github.com/crashtech/torque-postgresql
301
301
  bug_tracker_uri: https://github.com/crashtech/torque-postgresql/issues
302
- post_install_message:
302
+ post_install_message:
303
303
  rdoc_options:
304
304
  - "--title"
305
305
  - Torque PostgreSQL
@@ -316,60 +316,60 @@ required_rubygems_version: !ruby/object:Gem::Requirement
316
316
  - !ruby/object:Gem::Version
317
317
  version: 1.8.11
318
318
  requirements: []
319
- rubygems_version: 3.0.8
320
- signing_key:
319
+ rubygems_version: 3.2.15
320
+ signing_key:
321
321
  specification_version: 4
322
322
  summary: ActiveRecord extension to access PostgreSQL advanced resources
323
323
  test_files:
324
324
  - spec/en.yml
325
325
  - spec/factories/authors.rb
326
326
  - spec/factories/comments.rb
327
+ - spec/factories/item.rb
327
328
  - spec/factories/posts.rb
328
329
  - spec/factories/tags.rb
329
330
  - spec/factories/texts.rb
330
331
  - spec/factories/users.rb
331
332
  - spec/factories/videos.rb
332
- - spec/factories/item.rb
333
333
  - spec/mocks/cache_query.rb
334
334
  - spec/mocks/create_table.rb
335
335
  - spec/models/activity.rb
336
336
  - spec/models/activity_book.rb
337
- - spec/models/activity_post.rb
338
337
  - spec/models/activity_post/sample.rb
338
+ - spec/models/activity_post.rb
339
339
  - spec/models/author.rb
340
340
  - spec/models/author_journalist.rb
341
+ - spec/models/category.rb
341
342
  - spec/models/comment.rb
342
343
  - spec/models/course.rb
343
344
  - spec/models/geometry.rb
344
345
  - spec/models/guest_comment.rb
346
+ - spec/models/internal/user.rb
347
+ - spec/models/item.rb
345
348
  - spec/models/post.rb
349
+ - spec/models/question.rb
350
+ - spec/models/question_select.rb
346
351
  - spec/models/tag.rb
347
352
  - spec/models/text.rb
348
353
  - spec/models/time_keeper.rb
349
354
  - spec/models/user.rb
350
355
  - spec/models/video.rb
351
- - spec/models/item.rb
352
- - spec/models/question.rb
353
- - spec/models/question_select.rb
354
- - spec/models/internal/user.rb
355
- - spec/models/category.rb
356
+ - spec/schema.rb
357
+ - spec/spec_helper.rb
358
+ - spec/tests/arel_spec.rb
359
+ - spec/tests/auxiliary_statement_spec.rb
360
+ - spec/tests/belongs_to_many_spec.rb
356
361
  - spec/tests/collector_spec.rb
357
362
  - spec/tests/distinct_on_spec.rb
363
+ - spec/tests/enum_set_spec.rb
364
+ - spec/tests/enum_spec.rb
358
365
  - spec/tests/geometric_builder_spec.rb
359
- - spec/tests/lazy_spec.rb
360
- - spec/tests/quoting_spec.rb
361
- - spec/tests/relation_spec.rb
362
- - spec/tests/belongs_to_many_spec.rb
363
- - spec/tests/range_spec.rb
366
+ - spec/tests/has_many_spec.rb
364
367
  - spec/tests/insert_all_spec.rb
365
- - spec/tests/enum_set_spec.rb
366
- - spec/tests/auxiliary_statement_spec.rb
367
368
  - spec/tests/interval_spec.rb
369
+ - spec/tests/lazy_spec.rb
368
370
  - spec/tests/period_spec.rb
371
+ - spec/tests/quoting_spec.rb
372
+ - spec/tests/range_spec.rb
373
+ - spec/tests/relation_spec.rb
369
374
  - spec/tests/schema_spec.rb
370
375
  - spec/tests/table_inheritance_spec.rb
371
- - spec/tests/arel_spec.rb
372
- - spec/tests/enum_spec.rb
373
- - spec/tests/has_many_spec.rb
374
- - spec/spec_helper.rb
375
- - spec/schema.rb