lib/hanami/model/adapters/rethinkdb/command.rb
module Hanami
module Model
module Adapters
module Rethinkdb
# Execute a command for the given query.
#
# @see Hanami::Model::Adapters::Rethinkdb::Query
#
# @api private
# @since 0.1.0
class Command
# Initialize a command
#
# @param query [Hanami::Model::Adapters::Rethinkdb::Query]
#
# @api private
# @since 0.1.0
def initialize(query)
@collection = query.scoped
end
# Creates a document for the given entity.
#
# @param entity [Object] the entity to persist
#
# @see Hanami::Model::Adapters::Rethinkdb::Collection#insert
#
# @return the primary key of the just created document.
#
# @api private
# @since 0.1.0
def create(entity)
@collection.insert(entity)
end
# Updates the corresponding document for the given entity.
#
# @param entity [Object] the entity to persist
#
# @see Hanami::Model::Adapters::Rethinkdb::Collection#update
#
# @api private
# @since 0.1.0
def update(entity)
@collection.update(entity)
end
# Deletes all the documents for the current query.
#
# It's used to delete a single document or an entire database table.
#
# @see Hanami::Model::Adapters::RethinkdbAdapter#delete
# @see Hanami::Model::Adapters::RethinkdbAdapter#clear
#
# @api private
# @since 0.1.0
def delete
@collection.delete
end
alias_method :clear, :delete
end
end
end
end
end