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>
57 lines
1.8 KiB
Ruby
57 lines
1.8 KiB
Ruby
# == Schema Information
|
|
#
|
|
# Table name: reporting_events
|
|
#
|
|
# id :bigint not null, primary key
|
|
# event_end_time :datetime
|
|
# event_start_time :datetime
|
|
# name :string
|
|
# value :float
|
|
# value_in_business_hours :float
|
|
# created_at :datetime not null
|
|
# updated_at :datetime not null
|
|
# account_id :integer
|
|
# conversation_id :integer
|
|
# inbox_id :integer
|
|
# user_id :integer
|
|
#
|
|
# Indexes
|
|
#
|
|
# index_reporting_events_for_response_distribution (account_id,name,inbox_id,created_at)
|
|
# index_reporting_events_on_account_id (account_id)
|
|
# index_reporting_events_on_conversation_id (conversation_id)
|
|
# index_reporting_events_on_created_at (created_at)
|
|
# index_reporting_events_on_inbox_id (inbox_id)
|
|
# index_reporting_events_on_name (name)
|
|
# index_reporting_events_on_user_id (user_id)
|
|
# reporting_events__account_id__name__created_at (account_id,name,created_at)
|
|
#
|
|
|
|
class ReportingEvent < ApplicationRecord
|
|
validates :account_id, presence: true
|
|
validates :name, presence: true
|
|
validates :value, presence: true
|
|
|
|
belongs_to :account
|
|
belongs_to :user, optional: true
|
|
belongs_to :inbox, optional: true
|
|
belongs_to :conversation, optional: true
|
|
|
|
# Scopes for filtering
|
|
scope :filter_by_date_range, lambda { |range|
|
|
where(created_at: range) if range.present?
|
|
}
|
|
|
|
scope :filter_by_inbox_id, lambda { |inbox_id|
|
|
where(inbox_id: inbox_id) if inbox_id.present?
|
|
}
|
|
|
|
scope :filter_by_user_id, lambda { |user_id|
|
|
where(user_id: user_id) if user_id.present?
|
|
}
|
|
|
|
scope :filter_by_name, lambda { |name|
|
|
where(name: name) if name.present?
|
|
}
|
|
end
|