Add missing files :(

This commit is contained in:
Linus Gasser 2025-10-13 13:48:11 +02:00
parent b69cd9df2a
commit 4182608f39
3 changed files with 69 additions and 0 deletions

View file

@ -0,0 +1,45 @@
# frozen_string_literal: true
require 'securerandom'
class BulkEmailSession < ApplicationRecord
before_validation :generate_token, on: :create
before_validation :set_expiration, on: :create
validates :token, presence: true, uniqueness: true
validates :recipient_emails, presence: true
serialize :recipient_emails, type: Array
# Sessions expire after 1 hour to prevent database bloat
EXPIRATION_TIME = 1.hour
scope :active, -> { where('expires_at > ?', Time.current) }
scope :expired, -> { where('expires_at <= ?', Time.current) }
def self.cleanup_expired!
expired.delete_all
end
def expired?
expires_at <= Time.current
end
def recipient_count
recipient_emails&.size || 0
end
private
def generate_token
return if token.present?
self.token = SecureRandom.hex(16)
end
def set_expiration
return if expires_at.present?
self.expires_at = EXPIRATION_TIME.from_now
end
end

View file

@ -0,0 +1,15 @@
class CreateBulkEmailSessions < ActiveRecord::Migration[7.2]
def change
create_table :bulk_email_sessions do |t|
t.string :token, null: false
t.text :recipient_emails
t.string :filter_type
t.string :search_term
t.datetime :expires_at
t.timestamps
end
add_index :bulk_email_sessions, :token, unique: true
add_index :bulk_email_sessions, :expires_at
end
end

View file

@ -0,0 +1,9 @@
# frozen_string_literal: true
namespace :bulk_email do
desc 'Clean up expired bulk email sessions'
task cleanup: :environment do
count = BulkEmailSession.cleanup_expired!
puts "Cleaned up #{count} expired bulk email sessions"
end
end