Module: PgPartitioner::SeparationType::Base
- Defined in:
- lib/pg_partitioner/separation_type/base.rb
Instance Method Summary collapse
- #create_partition_indexes(partition_table_name) ⇒ Object
- #create_partition_named_indexes(partition_table_name) ⇒ Object
- #create_partition_named_unique_indexes(partition_table_name) ⇒ Object
- #create_partition_unique_indexes(partition_table_name) ⇒ Object
- #drop_partitioning_trigger_sql ⇒ Object
- #drop_table(table_name) ⇒ Object
- #name_of_partition_table(date = Date.today, type:) ⇒ Object
Instance Method Details
#create_partition_indexes(partition_table_name) ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/pg_partitioner/separation_type/base.rb', line 18 def create_partition_indexes(partition_table_name) custom_indexes = partition_table_indexes.presence return unless custom_indexes custom_indexes.each do |custom_index| if custom_index.is_a?(Hash) name = custom_index[:name] custom_index[:name] = "index_#{partition_table_name}_#{name}" if name create_custom_index(partition_table_name, custom_index[:fields], **custom_index.except(:fields)) else create_custom_index(partition_table_name, custom_index) end end end |
#create_partition_named_indexes(partition_table_name) ⇒ Object
33 34 35 36 37 38 39 40 41 |
# File 'lib/pg_partitioner/separation_type/base.rb', line 33 def create_partition_named_indexes(partition_table_name) custom_indexes = partition_table_named_indexes.presence return unless custom_indexes custom_indexes.each do |name, custom_index| index_name = "index_#{partition_table_name}_#{name}" create_custom_named_index(partition_table_name, custom_index, index_name) end end |
#create_partition_named_unique_indexes(partition_table_name) ⇒ Object
52 53 54 55 56 57 58 59 60 |
# File 'lib/pg_partitioner/separation_type/base.rb', line 52 def create_partition_named_unique_indexes(partition_table_name) custom_indexes = partition_table_named_unique_indexes.presence return unless custom_indexes custom_indexes.each do |name, custom_index| index_name = "index_#{partition_table_name}_#{name}" create_custom_named_index(partition_table_name, custom_index, index_name, unique: true) end end |
#create_partition_unique_indexes(partition_table_name) ⇒ Object
43 44 45 46 47 48 49 50 |
# File 'lib/pg_partitioner/separation_type/base.rb', line 43 def create_partition_unique_indexes(partition_table_name) custom_unique_indexes = partition_table_unique_indexes.presence return unless custom_unique_indexes custom_unique_indexes.each do |custom_index| create_custom_index(partition_table_name, custom_index, unique: true) end end |
#drop_partitioning_trigger_sql ⇒ Object
9 10 11 12 13 14 15 16 |
# File 'lib/pg_partitioner/separation_type/base.rb', line 9 def drop_partitioning_trigger_sql sql = "DROP TRIGGER #{table_name}_insert ON #{table_name}; DROP FUNCTION #{table_name}_insert_trigger(); DROP TRIGGER #{table_name}_after_insert ON #{table_name}; DROP FUNCTION #{table_name}_delete_trigger();" execute_sql(sql) end |
#drop_table(table_name) ⇒ Object
4 5 6 7 |
# File 'lib/pg_partitioner/separation_type/base.rb', line 4 def drop_table(table_name) sql = "DROP TABLE IF EXISTS #{table_name};" execute_sql(sql) end |
#name_of_partition_table(date = Date.today, type:) ⇒ Object
62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/pg_partitioner/separation_type/base.rb', line 62 def name_of_partition_table(date = Date.today, type:) case type when :month date.strftime("#{table_name}_y%Ym%m") when :quater "#{table_name}_y#{date.year}q#{(((date.month - 1) / 3) + 1).to_i}" when :week if date.cweek < 10 "#{table_name}_y#{date.year}w0#{date.cweek}" else "#{table_name}_y#{date.year}w#{date.cweek}" end end end |