Module: ReservationRequestLocker

Included in:
ReservationService::Create, ReservationService::Init::HungryHub
Defined in:
app/my_lib/reservation_request_locker.rb

Overview

typed: ignore

Instance Method Summary collapse

Instance Method Details

#clear_request_lock(reservation) ⇒ Object



9
10
11
12
13
# File 'app/my_lib/reservation_request_locker.rb', line 9

def clear_request_lock(reservation)
  return if reservation.blank?

  Rails.cache.delete(_request_cache_key(reservation))
end

#duplicate_request?(reservation) ⇒ Boolean

check if the request is duplicate might be caused by user's multiple clicks

Returns:

  • (Boolean)


17
18
19
20
21
# File 'app/my_lib/reservation_request_locker.rb', line 17

def duplicate_request?(reservation)
  # Rails.cache.exist? return 0 if key not found, otherwise return 1
  result = Rails.cache.exist?(_request_cache_key(reservation))
  result == 1
end

#lock_request(reservation) ⇒ Object

track booking request to redis to prevent duplicate booking requests that might be caused by user's multiple clicks



5
6
7
# File 'app/my_lib/reservation_request_locker.rb', line 5

def lock_request(reservation)
  Rails.cache.write(_request_cache_key(reservation), reservation.id.to_s, expires_in: 1.minute)
end