lib/basket/queue_collection.rb in basket-0.0.6 vs lib/basket/queue_collection.rb in basket-0.0.7
- old
+ new
@@ -3,30 +3,59 @@
def initialize(backend = Basket.config.backend)
@backend = backend.new
end
def push(queue, data)
- @backend.push(queue, data)
+ @backend.push(queue, Element.new(data))
length(queue)
end
def length(queue)
@backend.length(queue)
end
def read(queue)
- @backend.read(queue)
+ check_for_basket(queue)
+ raw_queue = @backend.read(queue)
+ raw_queue.map { |element| Element.from_queue(element).data }
end
+ def search(queue, query)
+ check_for_basket(queue)
+ check_for_zero_length(queue)
+ raw_search_results = @backend.search(queue, &query)
+ raw_search_results.map { |raw_search_result| Element.from_queue(raw_search_result) }
+ end
+
+ def remove(queue, id)
+ raw_removed_element = @backend.remove(queue, id)
+ check_for_raw_removed_element(raw_removed_element)
+ Element.from_queue(raw_removed_element).data
+ end
+
def clear(queue)
@backend.clear(queue)
end
def data
@backend.data
end
def reset_backend
@backend = Basket.config.backend.new
+ end
+
+ private
+
+ def check_for_basket(queue)
+ raise Basket::BasketNotFoundError unless Object.const_defined?(queue)
+ end
+
+ def check_for_zero_length(queue)
+ raise Basket::EmptyBasketError, "The basket #{queue} is empty." if length(queue).zero?
+ end
+
+ def check_for_raw_removed_element(raw_removed_element)
+ raise Basket::ElementNotFoundError if raw_removed_element.nil?
end
end
end