FEATURE: Allow plugins to register a callback to ignore DraftSequence.

This commit is contained in:
Guo Xiang Tan
2020-05-12 14:25:20 +08:00
parent d301af39bd
commit 8fb99f218d
2 changed files with 21 additions and 2 deletions

View File

@ -5,7 +5,7 @@ class DraftSequence < ActiveRecord::Base
user_id = user
user_id = user.id unless user.is_a?(Integer)
return 0 if user_id < 0
return 0 if invalid_user_id?(user_id)
h = { user_id: user_id, draft_key: key }
c = DraftSequence.find_by(h)
@ -23,12 +23,22 @@ class DraftSequence < ActiveRecord::Base
user_id = user
user_id = user.id unless user.is_a?(Integer)
return nil if user_id < 0
return nil if invalid_user_id?(user_id)
# perf critical path
r, _ = DB.query_single('select sequence from draft_sequences where user_id = ? and draft_key = ?', user_id, key)
r.to_i
end
cattr_accessor :plugin_ignore_draft_sequence_callbacks
self.plugin_ignore_draft_sequence_callbacks = {}
def self.invalid_user_id?(user_id)
user_id < 0 || self.plugin_ignore_draft_sequence_callbacks.any? do |plugin, callback|
plugin.enabled? ? callback.call(user_id) : false
end
end
private_class_method :invalid_user_id?
end
# == Schema Information