Class: PgHaMigrations::AbstractPartmanRenameAdapter
- Inherits:
-
Object
- Object
- PgHaMigrations::AbstractPartmanRenameAdapter
show all
- Defined in:
- lib/pg_ha_migrations/partman_rename_adapter.rb
Instance Method Summary
collapse
Constructor Details
Returns a new instance of AbstractPartmanRenameAdapter.
3
4
5
6
7
8
9
|
# File 'lib/pg_ha_migrations/partman_rename_adapter.rb', line 3
def initialize(part_config)
if part_config.datetime_string != source_datetime_string
raise PgHaMigrations::InvalidPartmanConfigError,
"Expected datetime_string to be #{source_datetime_string.inspect} " \
"but received #{part_config.datetime_string.inspect}"
end
end
|
Instance Method Details
#alter_table_sql(partitions) ⇒ Object
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
# File 'lib/pg_ha_migrations/partman_rename_adapter.rb', line 11
def alter_table_sql(partitions)
sql = partitions.filter_map do |partition|
next if partition.name =~ /\A.+_default\z/
if partition.name !~ source_name_suffix_pattern
raise PgHaMigrations::InvalidIdentifierError,
"Expected #{partition.name.inspect} to match #{source_name_suffix_pattern.inspect}"
end
begin
"ALTER TABLE #{partition.fully_qualified_name} RENAME TO #{target_table_name(partition.name)};"
rescue Date::Error
raise PgHaMigrations::InvalidIdentifierError,
"Expected #{partition.name.inspect} suffix to be a parseable DateTime"
end
end.join("\n")
"DO $$ BEGIN #{sql} END; $$;"
end
|
#source_datetime_string ⇒ Object
38
39
40
|
# File 'lib/pg_ha_migrations/partman_rename_adapter.rb', line 38
def source_datetime_string
raise "#{__method__} should be implemented in subclass"
end
|
#source_name_suffix_pattern ⇒ Object
42
43
44
|
# File 'lib/pg_ha_migrations/partman_rename_adapter.rb', line 42
def source_name_suffix_pattern
raise "#{__method__} should be implemented in subclass"
end
|
#target_datetime_string ⇒ Object
46
47
48
|
# File 'lib/pg_ha_migrations/partman_rename_adapter.rb', line 46
def target_datetime_string
raise "#{__method__} should be implemented in subclass"
end
|
#target_table_name(table_name) ⇒ Object
34
35
36
|
# File 'lib/pg_ha_migrations/partman_rename_adapter.rb', line 34
def target_table_name(table_name)
raise "#{__method__} should be implemented in subclass"
end
|