lib/adapter/cassanity.rb in adapter-cassanity-0.1.0 vs lib/adapter/cassanity.rb in adapter-cassanity-0.2.0
- old
+ new
@@ -6,37 +6,67 @@
module Cassanity
extend Forwardable
def_delegator :@client, :schema
- def read(key)
- rows = client.select(where: where(key))
+ # Public
+ def read(key, options = nil)
+ operation_options = {where: where(key)}
+ adapter_options = @options[:read]
+ arguments = update_arguments(operation_options, adapter_options, options)
+
+ rows = @client.select(arguments)
rows.empty? ? nil : decode(rows.first)
end
- def write(key, attributes)
- client.update({
- set: encode(attributes),
- where: where(key),
- })
+ # Public
+ def write(key, attributes, options = nil)
+ operation_options = {set: encode(attributes), where: where(key)}
+ adapter_options = @options[:write]
+ arguments = update_arguments(operation_options, adapter_options, options)
+
+ @client.update(arguments)
end
- def delete(key)
- client.delete(where: where(key))
+ # Public
+ def delete(key, options = nil)
+ operation_options = {where: where(key)}
+ adapter_options = @options[:delete]
+ arguments = update_arguments(operation_options, adapter_options, options)
+
+ @client.delete(arguments)
end
+ # Public
def clear
- client.truncate
+ @client.truncate
end
# Private
def where(criteria)
if schema.composite_primary_key?
criteria
else
primary_key = schema.primary_keys.first
{primary_key => criteria}
end
+ end
+
+ # Private
+ def update_arguments(operation_options, adapter_options, method_options)
+ keys = operation_options.keys
+
+ if !adapter_options.nil? && !adapter_options.empty?
+ filtered_options = adapter_options.reject { |key| keys.include?(key) }
+ operation_options.update(filtered_options)
+ end
+
+ if !method_options.nil? && !method_options.empty?
+ filtered_options = method_options.reject { |key| keys.include?(key) }
+ operation_options.update(filtered_options)
+ end
+
+ operation_options
end
end
end
Adapter.define(:cassanity, Adapter::Cassanity)