89 lines
3.7 KiB
Ruby
Executable File
89 lines
3.7 KiB
Ruby
Executable File
# frozen_string_literal: true
|
|
|
|
# == Schema Information
|
|
#
|
|
# Table name: conversations
|
|
#
|
|
# id :integer not null, primary key
|
|
# active_scenario_expires_at :datetime
|
|
# active_scenario_key :string
|
|
# active_scenario_state :jsonb not null
|
|
# additional_attributes :jsonb
|
|
# agent_last_seen_at :datetime
|
|
# assignee_last_seen_at :datetime
|
|
# cached_label_list :text
|
|
# contact_last_seen_at :datetime
|
|
# custom_attributes :jsonb
|
|
# first_reply_created_at :datetime
|
|
# identifier :string
|
|
# last_activity_at :datetime not null
|
|
# priority :integer
|
|
# snoozed_until :datetime
|
|
# status :integer default("open"), not null
|
|
# uuid :uuid not null
|
|
# waiting_since :datetime
|
|
# created_at :datetime not null
|
|
# updated_at :datetime not null
|
|
# account_id :integer not null
|
|
# assignee_agent_bot_id :bigint
|
|
# assignee_id :integer
|
|
# campaign_id :bigint
|
|
# contact_id :bigint
|
|
# contact_inbox_id :bigint
|
|
# display_id :integer not null
|
|
# inbox_id :integer not null
|
|
# sla_policy_id :bigint
|
|
# team_id :bigint
|
|
#
|
|
# Indexes
|
|
#
|
|
# conv_acid_inbid_stat_asgnid_idx (account_id,inbox_id,status,assignee_id)
|
|
# index_conversations_on_account_id (account_id)
|
|
# index_conversations_on_account_id_and_display_id (account_id,display_id) UNIQUE
|
|
# index_conversations_on_active_scenario_key (active_scenario_key)
|
|
# index_conversations_on_assignee_id_and_account_id (assignee_id,account_id)
|
|
# index_conversations_on_campaign_id (campaign_id)
|
|
# index_conversations_on_contact_id (contact_id)
|
|
# index_conversations_on_contact_inbox_id (contact_inbox_id)
|
|
# index_conversations_on_first_reply_created_at (first_reply_created_at)
|
|
# index_conversations_on_id_and_account_id (account_id,id)
|
|
# index_conversations_on_identifier_and_account_id (identifier,account_id)
|
|
# index_conversations_on_inbox_id (inbox_id)
|
|
# index_conversations_on_priority (priority)
|
|
# index_conversations_on_status_and_account_id (status,account_id)
|
|
# index_conversations_on_status_and_priority (status,priority)
|
|
# index_conversations_on_team_id (team_id)
|
|
# index_conversations_on_uuid (uuid) UNIQUE
|
|
# index_conversations_on_waiting_since (waiting_since)
|
|
#
|
|
FactoryBot.define do
|
|
factory :conversation do
|
|
status { 'open' }
|
|
agent_last_seen_at { Time.current }
|
|
identifier { SecureRandom.hex }
|
|
|
|
after(:build) do |conversation|
|
|
conversation.account ||= create(:account)
|
|
conversation.inbox ||= create(
|
|
:inbox,
|
|
account: conversation.account,
|
|
channel: create(:channel_widget, account: conversation.account)
|
|
)
|
|
conversation.contact ||= create(:contact, :with_email, account: conversation.account)
|
|
conversation.contact_inbox ||= create(:contact_inbox, contact: conversation.contact, inbox: conversation.inbox)
|
|
end
|
|
|
|
trait :with_team do
|
|
after(:build) do |conversation|
|
|
conversation.team ||= create(:team, account: conversation.account)
|
|
end
|
|
end
|
|
|
|
trait :with_assignee do
|
|
after(:build) do |conversation|
|
|
conversation.assignee ||= create(:user, account: conversation.account, role: :agent)
|
|
end
|
|
end
|
|
end
|
|
end
|