gab-social/app/services/delete_chat_message_service.rb

24 lines
480 B
Ruby

# frozen_string_literal: true
class DeleteChatMessageService < BaseService
include Redisable
def call(chat_message)
return if chat_message.nil?
@chat_message = chat_message
RedisLock.acquire(lock_options) do |lock|
if lock.acquired?
@chat_message.destroy!
else
raise GabSocial::RaceConditionError
end
end
end
def lock_options
{ redis: Redis.current, key: "distribute_chat_message:#{@chat_message.id}" }
end
end