This pull request fixes the model annotation tooling due to previous incomplete migration from `annotate` to `annotaterb` gem (#12600). It also improves the handling of serialized values in the `InstallationConfig` model by ensuring a default value is set, simplifying the code, and removing a workaround for YAML deserialization. **Annotation tooling updates:** * Added `.annotaterb.yml` to configure the `annotate_rb` gem with project-specific options, centralizing annotation settings. * Replaced the custom `auto_annotate_models.rake` task with the standard rake task from `annotate_rb`, and added `lib/tasks/annotate_rb.rake` to load annotation tasks in development environments. [[1]](diffhunk://#diff-9450d2359e45f1db407b3871dde787a25d60bb721aed179a65ffd2692e95fb4bL1-L61) [[2]](diffhunk://#diff-578cdfc7ad56637e42472ea891ea286dff8803d9a1750afdbfeafec164d9b8b2R1-R8) **Model serialization improvements:** * Updated the `InstallationConfig` model to set a default value for the `serialized_value` attribute, ensuring it always has a hash with indifferent access and removing the need for a deserialization workaround in the `value` method. [[1]](diffhunk://#diff-b4bdde42c1ad0f584073818bd43dbd865b1b3b50d4701b131979f900d7c68297L22-R22) [[2]](diffhunk://#diff-b4bdde42c1ad0f584073818bd43dbd865b1b3b50d4701b131979f900d7c68297L36-L39) --------- Co-authored-by: Sojan Jose <sojan@pepalo.com>
49 lines
1.8 KiB
Ruby
49 lines
1.8 KiB
Ruby
# == Schema Information
|
|
#
|
|
# Table name: reporting_events_rollups
|
|
#
|
|
# id :bigint not null, primary key
|
|
# count :bigint default(0), not null
|
|
# date :date not null
|
|
# dimension_type :string not null
|
|
# metric :string not null
|
|
# sum_value :float default(0.0), not null
|
|
# sum_value_business_hours :float default(0.0), not null
|
|
# created_at :datetime not null
|
|
# updated_at :datetime not null
|
|
# account_id :integer not null
|
|
# dimension_id :bigint not null
|
|
#
|
|
# Indexes
|
|
#
|
|
# index_rollup_summary (account_id,dimension_type,date)
|
|
# index_rollup_timeseries (account_id,metric,date)
|
|
# index_rollup_unique_key (account_id,date,dimension_type,dimension_id,metric) UNIQUE
|
|
#
|
|
|
|
class ReportingEventsRollup < ApplicationRecord
|
|
belongs_to :account
|
|
|
|
# Store string values directly in the database for better readability and debugging
|
|
enum :dimension_type, %w[account agent inbox team].index_by(&:itself)
|
|
enum :metric, %w[
|
|
resolutions_count
|
|
first_response
|
|
resolution_time
|
|
reply_time
|
|
bot_resolutions_count
|
|
bot_handoffs_count
|
|
].index_by(&:itself)
|
|
|
|
validates :account_id, presence: true
|
|
validates :date, presence: true
|
|
validates :dimension_type, presence: true
|
|
validates :dimension_id, presence: true
|
|
validates :metric, presence: true
|
|
validates :count, numericality: { greater_than_or_equal_to: 0 }
|
|
|
|
scope :for_date_range, ->(start_date, end_date) { where(date: start_date..end_date) }
|
|
scope :for_dimension, ->(type, id) { where(dimension_type: type, dimension_id: id) }
|
|
scope :for_metric, ->(metric) { where(metric: metric) }
|
|
end
|