Skip to content

Commit 189a0ba

Browse files
mroderickopencode
andcommitted
feat(invitations): add cleanup job for expired logs
- Add CleanupExpiredInvitationLogsJob for 180-day retention - Add rake task invitation_logs:cleanup - Add job specs Co-Authored-By: opencode <noreply@opencode.ai>
1 parent 234fca5 commit 189a0ba

4 files changed

Lines changed: 37 additions & 168 deletions

File tree

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
class CleanupExpiredInvitationLogsJob < ApplicationJob
2+
queue_as :default
3+
4+
def perform
5+
InvitationLog.where('expires_at < ?', Time.current).destroy_all
6+
end
7+
end

lib/tasks/invitation_logs.rake

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
namespace :invitation_logs do
2+
desc 'Clean up expired invitation logs'
3+
task cleanup: :environment do
4+
CleanupExpiredInvitationLogsJob.perform_now
5+
end
6+
end

rebase.sh

Lines changed: 0 additions & 168 deletions
This file was deleted.
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
require 'rails_helper'
2+
3+
RSpec.describe CleanupExpiredInvitationLogsJob do
4+
describe '#perform' do
5+
it 'destroys invitation logs that have expired' do
6+
expired_log = Fabricate(:invitation_log, expires_at: 1.day.ago)
7+
valid_log = Fabricate(:invitation_log, expires_at: 1.day.from_now)
8+
9+
described_class.new.perform
10+
11+
expect(InvitationLog.exists?(expired_log.id)).to be false
12+
expect(InvitationLog.exists?(valid_log.id)).to be true
13+
end
14+
15+
it 'destroys associated entries via dependent: :destroy' do
16+
log = Fabricate(:invitation_log, expires_at: 1.day.ago)
17+
entry = Fabricate(:invitation_log_entry, invitation_log: log)
18+
19+
described_class.new.perform
20+
21+
expect(InvitationLogEntry.exists?(entry.id)).to be false
22+
end
23+
end
24+
end

0 commit comments

Comments
 (0)