## Code Context **Query:** reporting, CSAT survey, campaign, reporting event, reporting rollup, report metrics, inbox CSAT template, dashboard stats ### Entry Points - **CreateReportingEventsRollup** (class) - db/migrate/20260211145813_create_reporting_events_rollup.rb:1 - **AddIndexToReportingEvents** (class) - db/migrate/20230612103936_add_index_to_reporting_events.rb:1 - **AddIndexToReportingEventsForResponseDistribution** (class) - db/migrate/20260130061021_add_index_to_reporting_events_for_response_distribution.rb:1 ### Related Symbols - db/migrate/20260211145813_create_reporting_events_rollup.rb: change:2, create_rollups_table:9, add_rollups_indexes:24 - db/migrate/20230612103936_add_index_to_reporting_events.rb: change:4 - db/migrate/20260130061021_add_index_to_reporting_events_for_response_distribution.rb: change:4 ### Code #### CreateReportingEventsRollup (db/migrate/20260211145813_create_reporting_events_rollup.rb:1) ```ruby class CreateReportingEventsRollup < ActiveRecord::Migration[7.1] def change create_rollups_table add_rollups_indexes end private def create_rollups_table create_table :reporting_events_rollups do |t| t.integer :account_id, null: false t.date :date, null: false t.string :dimension_type, null: false t.bigint :dimension_id, null: false t.string :metric, null: false t.bigint :count, default: 0, null: false t.float :sum_value, default: 0.0, null: false t.float :sum_value_business_hours, default: 0.0, null: false t.timestamps end end def add_rollups_indexes add_index :reporting_events_rollups, [:account_id, :date, :dimension_type, :dimension_id, :metric], unique: true, name: 'index_rollup_unique_key' add_index :reporting_events_rollups, [:account_id, :metric, :date], name: 'index_rollup_timeseries' add_index :reporting_events_rollups, [:account_id, :dimension_type, :date], name: 'index_rollup_summary' end end ``` #### AddIndexToReportingEvents (db/migrate/20230612103936_add_index_to_reporting_events.rb:1) ```ruby class AddIndexToReportingEvents < ActiveRecord::Migration[7.0] disable_ddl_transaction! def change add_index :reporting_events, [:account_id, :name, :created_at], name: 'reporting_events__account_id__name__created_at', algorithm: :concurrently end end ``` #### AddIndexToReportingEventsForResponseDistribution (db/migrate/20260130061021_add_index_to_reporting_events_for_response_distribution.rb:1) ```ruby class AddIndexToReportingEventsForResponseDistribution < ActiveRecord::Migration[7.1] disable_ddl_transaction! def change add_index :reporting_events, [:account_id, :name, :inbox_id, :created_at], name: 'index_reporting_events_for_response_distribution', algorithm: :concurrently, if_not_exists: true end end ``` #### change (db/migrate/20260211145813_create_reporting_events_rollup.rb:2) ```ruby def change create_rollups_table add_rollups_indexes end ``` #### create_rollups_table (db/migrate/20260211145813_create_reporting_events_rollup.rb:9) ```ruby def create_rollups_table create_table :reporting_events_rollups do |t| t.integer :account_id, null: false t.date :date, null: false t.string :dimension_type, null: false t.bigint :dimension_id, null: false t.string :metric, null: false t.bigint :count, default: 0, null: false t.float :sum_value, default: 0.0, null: false t.float :sum_value_business_hours, default: 0.0, null: false t.timestamps end end ``` #### add_rollups_indexes (db/migrate/20260211145813_create_reporting_events_rollup.rb:24) ```ruby def add_rollups_indexes add_index :reporting_events_rollups, [:account_id, :date, :dimension_type, :dimension_id, :metric], unique: true, name: 'index_rollup_unique_key' add_index :reporting_events_rollups, [:account_id, :metric, :date], name: 'index_rollup_timeseries' add_index :reporting_events_rollups, [:account_id, :dimension_type, :date], name: 'index_rollup_summary' end ``` #### change (db/migrate/20230612103936_add_index_to_reporting_events.rb:4) ```ruby def change add_index :reporting_events, [:account_id, :name, :created_at], name: 'reporting_events__account_id__name__created_at', algorithm: :concurrently end ``` #### change (db/migrate/20260130061021_add_index_to_reporting_events_for_response_distribution.rb:4) ```ruby def change add_index :reporting_events, [:account_id, :name, :inbox_id, :created_at], name: 'index_reporting_events_for_response_distribution', algorithm: :concurrently, if_not_exists: true end ```