Module: Footing::PGSchemaStatements
- Defined in:
- lib/footing/extensions/schema_statements.rb
Instance Method Summary collapse
-
#add_datetime_index(table_name, column_name, options = {}) ⇒ Object
Adds an index on a datetime column using the specified precision.
-
#add_timestamp_indexes(table_name) ⇒ Object
Adds indexes to the created_at and updated_at timestamp columns with ‘day’ granularity.
-
#remove_datetime_index(table_name, column_name, options = {}) ⇒ Object
Removes an index on a datetime column using the specified precision.
-
#remove_timestamp_indexes(table_name) ⇒ Object
Removes indexes to the created_at and updated_at timestamp columns with ‘day’ granularity.
Instance Method Details
#add_datetime_index(table_name, column_name, options = {}) ⇒ Object
Adds an index on a datetime column using the specified precision.
44 45 46 47 48 |
# File 'lib/footing/extensions/schema_statements.rb', line 44 def add_datetime_index(table_name, column_name, ={}) [:precision] ||= :minute index_name = "index_#{table_name}_on_#{column_name}_by_#{[:precision]}" execute "create index #{index_name} on #{quote_table_name(table_name)} (date_trunc('#{[:precision]}', #{quote_column_name(column_name)}))" end |
#add_timestamp_indexes(table_name) ⇒ Object
Adds indexes to the created_at and updated_at timestamp columns with ‘day’ granularity.
13 14 15 16 17 |
# File 'lib/footing/extensions/schema_statements.rb', line 13 def (table_name) %w(created_at updated_at).each do |column_name| add_datetime_index(table_name, column_name, :precision => :day) end end |
#remove_datetime_index(table_name, column_name, options = {}) ⇒ Object
Removes an index on a datetime column using the specified precision.
68 69 70 71 72 |
# File 'lib/footing/extensions/schema_statements.rb', line 68 def remove_datetime_index(table_name, column_name, ={}) [:precision] ||= :minute index_name = "index_#{table_name}_on_#{column_name}_by_#{[:precision]}" execute "drop index if exists #{index_name}" end |
#remove_timestamp_indexes(table_name) ⇒ Object
Removes indexes to the created_at and updated_at timestamp columns with ‘day’ granularity.
20 21 22 23 24 |
# File 'lib/footing/extensions/schema_statements.rb', line 20 def (table_name) %w(created_at updated_at).each do |column_name| remove_datetime_index(table_name, column_name, :precision => :day) end end |