From 13621484a227b5c3ef6ae5935c326df69dedf684 Mon Sep 17 00:00:00 2001 From: Shivam Mishra Date: Mon, 4 Nov 2024 21:47:53 +0530 Subject: [PATCH] feat: process click --- app/jobs/process_sns_webhook_job.rb | 9 +++++++++ app/models/email.rb | 1 + 2 files changed, 10 insertions(+) diff --git a/app/jobs/process_sns_webhook_job.rb b/app/jobs/process_sns_webhook_job.rb index fa58277..1a04529 100644 --- a/app/jobs/process_sns_webhook_job.rb +++ b/app/jobs/process_sns_webhook_job.rb @@ -37,6 +37,15 @@ def process_delivery @email.update(status: "delivered", delivered_at: timestamp) end + def process_click + data = @payload[:open] + timestamp = data.dig(:timestamp) + link = data.dig(:link) + + @email.clicks.create(link: link, timestamp: timestamp) + @email.update(opened_at: timestamp) if @email.opened_at.nil? + end + def process_open data = @payload[:open] timestamp = data.dig(:timestamp) diff --git a/app/models/email.rb b/app/models/email.rb index b8dc5fd..7e60a9b 100644 --- a/app/models/email.rb +++ b/app/models/email.rb @@ -26,6 +26,7 @@ class Email < ApplicationRecord include Statusable belongs_to :post + has_many :clicks, class_name: "EmailClick", dependent: :destroy belongs_to :subscriber, optional: true enum :status, { sent: "sent", delivered: "delivered", complained: "complained", bounced: "bounced" }