Files
docuseal/app/models/submission_event.rb
T

77 lines
2.4 KiB
Ruby
Raw Normal View History

2023-09-10 12:55:41 +03:00
# frozen_string_literal: true
# == Schema Information
#
# Table name: submission_events
#
# id :bigint not null, primary key
# data :text not null
# event_timestamp :datetime not null
# event_type :string not null
# created_at :datetime not null
# updated_at :datetime not null
2025-11-21 11:18:28 +02:00
# account_id :bigint
2023-09-10 12:55:41 +03:00
# submission_id :bigint not null
# submitter_id :bigint
#
# Indexes
#
2025-11-21 13:41:51 +02:00
# index_submission_events_on_account_id (account_id)
# index_submission_events_on_created_at (created_at)
# index_submission_events_on_submission_id (submission_id)
# index_submission_events_on_submitter_id (submitter_id)
# index_submissions_events_on_sms_event_types (account_id,created_at) WHERE ((event_type)::text = ANY ((ARRAY['send_sms'::character varying, 'send_2fa_sms'::character varying])::text[]))
2023-09-10 12:55:41 +03:00
#
# Foreign Keys
#
2025-11-21 11:18:28 +02:00
# fk_rails_... (account_id => accounts.id)
2023-09-10 12:55:41 +03:00
# fk_rails_... (submission_id => submissions.id)
# fk_rails_... (submitter_id => submitters.id)
#
class SubmissionEvent < ApplicationRecord
belongs_to :submission
2023-09-17 20:38:09 +03:00
has_one :account, through: :submission
2023-09-10 12:55:41 +03:00
belongs_to :submitter, optional: true
attribute :data, :string, default: -> { {} }
attribute :event_timestamp, :datetime, default: -> { Time.current }
2023-12-29 18:50:14 +00:00
serialize :data, coder: JSON
2023-09-10 12:55:41 +03:00
before_validation :set_submission_id, on: :create
2025-11-21 11:18:28 +02:00
before_validation :set_account_id, on: :create
2023-09-10 12:55:41 +03:00
enum :event_type, {
send_email: 'send_email',
2025-05-06 15:10:02 +03:00
bounce_email: 'bounce_email',
complaint_email: 'complaint_email',
2023-09-17 20:38:09 +03:00
send_reminder_email: 'send_reminder_email',
2023-09-10 12:55:41 +03:00
send_sms: 'send_sms',
2023-12-05 19:42:47 +02:00
send_2fa_sms: 'send_2fa_sms',
2025-12-08 09:32:03 +02:00
send_2fa_email: 'send_2fa_email',
2023-09-10 12:55:41 +03:00
open_email: 'open_email',
click_email: 'click_email',
click_sms: 'click_sms',
2023-09-27 23:28:33 +03:00
phone_verified: 'phone_verified',
2025-07-11 09:02:18 +03:00
email_verified: 'email_verified',
2023-09-10 12:55:41 +03:00
start_form: 'start_form',
2024-12-01 00:10:07 +02:00
start_verification: 'start_verification',
complete_verification: 'complete_verification',
2023-09-10 12:55:41 +03:00
view_form: 'view_form',
2024-09-12 17:31:37 +03:00
invite_party: 'invite_party',
2024-02-10 19:38:03 +02:00
complete_form: 'complete_form',
2024-08-21 09:22:59 +03:00
decline_form: 'decline_form',
2024-02-10 19:38:03 +02:00
api_complete_form: 'api_complete_form'
2023-09-10 12:55:41 +03:00
}, scope: false
private
def set_submission_id
self.submission_id = submitter&.submission_id
end
2025-11-21 11:18:28 +02:00
def set_account_id
self.account_id = submitter&.account_id
end
2023-09-10 12:55:41 +03:00
end