# frozen_string_literal: true

# SpacesAvailability is the relation table between a Space and an Availability.
# It defines periods in the agenda, when the given space can be reserved by members.
class SpacesAvailability < ApplicationRecord
  belongs_to :space
  belongs_to :availability
  after_destroy :cleanup_availability

  # when the SpacesAvailability is deleted (from Space destroy cascade), we delete the corresponding
  # availability. We don't use 'dependent: destroy' as we need to prevent conflicts if the destroy came from
  # the Availability destroy cascade.
  def cleanup_availability
    return unless availability.destroying

    availability.safe_destroy
  end
end