First commit!

This commit is contained in:
Dan Milne
2025-11-03 17:37:28 +11:00
commit 429d41eead
141 changed files with 5890 additions and 0 deletions

View File

@@ -0,0 +1,87 @@
# frozen_string_literal: true
class EventNormalizationJob < ApplicationJob
queue_as :default
# Normalize all existing events
def perform_all_events(batch_size: 1000)
total_events = Event.where(request_host_id: nil).count
Rails.logger.info "Starting normalization of #{total_events} events"
offset = 0
processed = 0
loop do
events = Event.where(request_host_id: nil)
.limit(batch_size)
.offset(offset)
.includes(:project)
break if events.empty?
events.each do |event|
begin
EventNormalizer.normalize_event!(event)
event.save!
processed += 1
rescue => e
Rails.logger.error "Failed to normalize event #{event.id}: #{e.message}"
end
end
Rails.logger.info "Processed #{processed}/#{total_events} events"
offset += batch_size
end
Rails.logger.info "Completed normalization of #{processed} events"
end
# Normalize a specific event
def perform(event_id)
event = Event.find(event_id)
EventNormalizer.normalize_event!(event)
event.save!
Rails.logger.info "Successfully normalized event #{event_id}"
rescue ActiveRecord::RecordNotFound
Rails.logger.error "Event #{event_id} not found for normalization"
rescue => e
Rails.logger.error "Failed to normalize event #{event_id}: #{e.message}"
raise
end
# Normalize events for a specific project
def perform_for_project(project_id, batch_size: 1000)
project = Project.find(project_id)
total_events = project.events.where(request_host_id: nil).count
Rails.logger.info "Starting normalization of #{total_events} events for project #{project.name}"
offset = 0
processed = 0
loop do
events = project.events
.where(request_host_id: nil)
.limit(batch_size)
.offset(offset)
break if events.empty?
events.each do |event|
begin
EventNormalizer.normalize_event!(event)
event.save!
processed += 1
rescue => e
Rails.logger.error "Failed to normalize event #{event.id}: #{e.message}"
end
end
Rails.logger.info "Processed #{processed}/#{total_events} events for project #{project.name}"
offset += batch_size
end
Rails.logger.info "Completed normalization of #{processed} events for project #{project.name}"
end
end