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 |
# 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 { |custom_index| create_custom_index(partition_table_name, custom_index) } end |
#create_partition_named_indexes(partition_table_name) ⇒ Object
25 26 27 28 29 30 31 32 33 |
# File 'lib/pg_partitioner/separation_type/base.rb', line 25 def create_partition_named_indexes(partition_table_name) custom_indexes = partition_table_named_indexes.presence return unless custom_indexes custom_indexes.map 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
42 43 44 45 46 47 48 49 50 |
# File 'lib/pg_partitioner/separation_type/base.rb', line 42 def create_partition_named_unique_indexes(partition_table_name) custom_indexes = partition_table_named_unique_indexes.presence return unless custom_indexes custom_indexes.map do |name, custom_index| index_name = "index_#{partition_table_name}_#{name}" create_custom_named_index(partition_table_name, custom_index, index_name, true) end end |
#create_partition_unique_indexes(partition_table_name) ⇒ Object
35 36 37 38 39 40 |
# File 'lib/pg_partitioner/separation_type/base.rb', line 35 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 { |custom_index| create_custom_index(partition_table_name, custom_index, true) } 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
52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/pg_partitioner/separation_type/base.rb', line 52 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 |