mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
FEATURE: Retain the latest 30 days of WebHookEvent records by default.
This commit is contained in:
parent
ed16cba77f
commit
6090994cdf
9
app/jobs/scheduled/purge_old_web_hook_events.rb
Normal file
9
app/jobs/scheduled/purge_old_web_hook_events.rb
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
module Jobs
|
||||||
|
class PurgeOldWebHookEvents < Jobs::Scheduled
|
||||||
|
every 1.week
|
||||||
|
|
||||||
|
def execute(_)
|
||||||
|
WebHookEvent.purge_old
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
@ -5,6 +5,12 @@ class WebHookEvent < ActiveRecord::Base
|
|||||||
|
|
||||||
default_scope { order('created_at DESC') }
|
default_scope { order('created_at DESC') }
|
||||||
|
|
||||||
|
def self.purge_old
|
||||||
|
where(
|
||||||
|
'created_at < ?', SiteSetting.retain_web_hook_events_period_days.days.ago
|
||||||
|
).delete_all
|
||||||
|
end
|
||||||
|
|
||||||
def update_web_hook_delivery_status
|
def update_web_hook_delivery_status
|
||||||
web_hook.last_delivery_status =
|
web_hook.last_delivery_status =
|
||||||
case status
|
case status
|
||||||
|
@ -3485,6 +3485,7 @@ en:
|
|||||||
developer: 'Developer'
|
developer: 'Developer'
|
||||||
embedding: "Embedding"
|
embedding: "Embedding"
|
||||||
legal: "Legal"
|
legal: "Legal"
|
||||||
|
api: 'API'
|
||||||
user_api: 'User API'
|
user_api: 'User API'
|
||||||
uncategorized: 'Other'
|
uncategorized: 'Other'
|
||||||
backups: "Backups"
|
backups: "Backups"
|
||||||
|
@ -1556,6 +1556,8 @@ en:
|
|||||||
default_categories_muted: "List of categories that are muted by default."
|
default_categories_muted: "List of categories that are muted by default."
|
||||||
default_categories_watching_first_post: "List of categories in which first post in each new topic will be watched by default."
|
default_categories_watching_first_post: "List of categories in which first post in each new topic will be watched by default."
|
||||||
|
|
||||||
|
retain_web_hook_events_period_days: "Number of days to retain web hook event records."
|
||||||
|
|
||||||
max_user_api_reqs_per_day: "Maximum number of user API requests per key per day"
|
max_user_api_reqs_per_day: "Maximum number of user API requests per key per day"
|
||||||
max_user_api_reqs_per_minute: "Maximum number of user API requests per key per minute"
|
max_user_api_reqs_per_minute: "Maximum number of user API requests per key per minute"
|
||||||
allow_user_api_keys: "Allow generation of user API keys"
|
allow_user_api_keys: "Allow generation of user API keys"
|
||||||
|
@ -1427,6 +1427,10 @@ user_preferences:
|
|||||||
type: category_list
|
type: category_list
|
||||||
default: ''
|
default: ''
|
||||||
|
|
||||||
|
api:
|
||||||
|
retain_web_hook_events_period_days:
|
||||||
|
default: 30
|
||||||
|
|
||||||
user_api:
|
user_api:
|
||||||
max_user_api_reqs_per_day:
|
max_user_api_reqs_per_day:
|
||||||
default: 2880
|
default: 2880
|
||||||
|
@ -4,13 +4,36 @@ describe WebHookEvent do
|
|||||||
let(:event) { WebHookEvent.new(status: 200, web_hook: Fabricate(:web_hook)) }
|
let(:event) { WebHookEvent.new(status: 200, web_hook: Fabricate(:web_hook)) }
|
||||||
let(:failed_event) { WebHookEvent.new(status: 400, web_hook: Fabricate(:web_hook)) }
|
let(:failed_event) { WebHookEvent.new(status: 400, web_hook: Fabricate(:web_hook)) }
|
||||||
|
|
||||||
|
describe '.purge_old' do
|
||||||
|
before do
|
||||||
|
SiteSetting.retain_web_hook_events_period_days = 1
|
||||||
|
end
|
||||||
|
|
||||||
|
it "should be able to purge old web hook events" do
|
||||||
|
web_hook = Fabricate(:web_hook)
|
||||||
|
web_hook_event = WebHookEvent.create!(status: 200, web_hook: web_hook)
|
||||||
|
WebHookEvent.create!(status: 200, web_hook: web_hook, created_at: 2.days.ago)
|
||||||
|
|
||||||
|
expect { described_class.purge_old }
|
||||||
|
.to change { WebHookEvent.count }.by(-1)
|
||||||
|
|
||||||
|
expect(WebHookEvent.find(web_hook_event.id)).to eq(web_hook_event)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe '#update_web_hook_delivery_status' do
|
||||||
it 'update last delivery status for associated WebHook record' do
|
it 'update last delivery status for associated WebHook record' do
|
||||||
event.update_web_hook_delivery_status
|
event.update_web_hook_delivery_status
|
||||||
expect(event.web_hook.last_delivery_status).to eq(WebHook.last_delivery_statuses[:successful])
|
|
||||||
|
expect(event.web_hook.last_delivery_status)
|
||||||
|
.to eq(WebHook.last_delivery_statuses[:successful])
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'sets last delivery status to failed' do
|
it 'sets last delivery status to failed' do
|
||||||
failed_event.update_web_hook_delivery_status
|
failed_event.update_web_hook_delivery_status
|
||||||
expect(failed_event.web_hook.last_delivery_status).to eq(WebHook.last_delivery_statuses[:failed])
|
|
||||||
|
expect(failed_event.web_hook.last_delivery_status)
|
||||||
|
.to eq(WebHook.last_delivery_statuses[:failed])
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user