module PgPartitions
Constants
- VERSION
Public Instance Methods
add_partition(table, name, check:)
click to toggle source
# File lib/pg_partitions.rb, line 7 def add_partition(table, name, check:) statement = SQL::Partition.new(table, check) create_table(name, id: false, options: statement.to_sql) end
add_partition_trigger(table, name, conditions)
click to toggle source
# File lib/pg_partitions.rb, line 12 def add_partition_trigger(table, name, conditions) insert_trigger = SQL::Trigger.new(table, "#{name}_insert", 'BEFORE INSERT') delete_function = SQL::DeleteFunction.new(table, "#{name}_delete") delete_trigger = SQL::Trigger.new(table, "#{name}_delete", 'AFTER INSERT') reversible do |dir| dir.up do update_partition_trigger(table, name, conditions) execute insert_trigger.to_sql execute delete_function.to_sql execute delete_trigger.to_sql end dir.down do drop_partition_trigger(table, name) end end end
drop_partition_trigger(table, name)
click to toggle source
# File lib/pg_partitions.rb, line 43 def drop_partition_trigger(table, name) execute "DROP TRIGGER #{name}_insert ON #{table}" execute "DROP FUNCTION #{name}_insert()" execute "DROP TRIGGER #{name}_delete ON #{table}" execute "DROP FUNCTION #{name}_delete()" end
update_partition_trigger(table, name, conditions)
click to toggle source
# File lib/pg_partitions.rb, line 32 def update_partition_trigger(table, name, conditions) insert_conditions = SQL::If.new(conditions) insert_function = SQL::InsertFunction.new( table, "#{name}_insert", insert_conditions.to_sql ) execute insert_function.to_sql end