0
@@ -152,20 +152,18 @@ module DataMapper
0
connection = create_connection
0
command = connection.create_command(sql)
0
result = command.execute_non_query(*values)
0
- close_connection(connection)
0
+ return false if result.to_i != 1
0
- key = resource.class.key(name)
0
- if key.size == 1 && (identity_field = key.first).serial?
0
- resource.instance_variable_set(identity_field.instance_variable_name, result.insert_id)
0
+ key = resource.class.key(name)
0
+ if key.size == 1 && (identity_field = key.first).serial?
0
+ resource.instance_variable_set(identity_field.instance_variable_name, result.insert_id)
0
+ close_connection(connection) if connection
0
def exists?(storage_name)
0
@@ -179,44 +177,43 @@ module DataMapper
0
set = Collection.new(repository, resource, properties_with_indexes)
0
sql = read_statement(resource, key)
0
- DataMapper.logger.debug("READ: #{sql}")
0
+ DataMapper.logger.debug("READ: #{sql} KEY: #{key.inspect}")
0
- connection = create_connection
0
- command = connection.create_command(sql)
0
- command.set_types(properties.map { |property| property.primitive })
0
- reader = command.execute_reader(*key)
0
- set.load(reader.values)
0
- reader.close if reader
0
- close_connection(connection)
0
+ connection = create_connection
0
+ command = connection.create_command(sql)
0
+ command.set_types(properties.map { |property| property.primitive })
0
+ reader = command.execute_reader(*key)
0
+ set.load(reader.values)
0
+ reader.close if reader
0
+ close_connection(connection) if connection
0
def update(repository, resource)
0
properties = resource.dirty_attributes
0
- sql = update_statement(resource.class, properties)
0
- values = properties.map { |property| resource.instance_variable_get(property.instance_variable_name) }
0
- parameters = (values + resource.key)
0
- DataMapper.logger.debug("UPDATE: #{sql} PARAMETERS: #{parameters.inspect}")
0
+ return false if properties.empty?
0
+ sql = update_statement(resource.class, properties)
0
+ values = properties.map { |property| resource.instance_variable_get(property.instance_variable_name) }
0
+ parameters = (values + resource.key)
0
+ DataMapper.logger.debug("UPDATE: #{sql} PARAMETERS: #{parameters.inspect}")
0
connection = create_connection
0
command = connection.create_command(sql)
0
affected_rows = command.execute_non_query(*parameters).to_i
0
- close_connection(connection)
0
+ close_connection(connection) if connection
0
def delete(repository, resource)
0
@@ -224,12 +221,11 @@ module DataMapper
0
connection = create_connection
0
command = connection.create_command(delete_statement(resource.class))
0
affected_rows = command.execute_non_query(*key).to_i
0
- close_connection(connection)
0
+ close_connection(connection) if connection
0
def create_model_storage(repository, model)
0
@@ -239,12 +235,11 @@ module DataMapper
0
connection = create_connection
0
command = connection.create_command(sql)
0
result = command.execute_non_query
0
- close_connection(connection)
0
+ close_connection(connection) if connection
0
def destroy_model_storage(repository, model)
0
@@ -254,12 +249,11 @@ module DataMapper
0
connection = create_connection
0
command = connection.create_command(sql)
0
result = command.execute_non_query
0
- close_connection(connection)
0
+ close_connection(connection) if connection
0
@@ -281,10 +275,11 @@ module DataMapper
0
Collection.new(repository, model, properties_with_indexes) do |set|
0
DataMapper.logger.debug("READ_SET: #{sql} PARAMETERS: #{parameters.inspect}")
0
- connection = create_connection
0
+ connection = create_connection
0
command = connection.create_command(sql)
0
command.set_types(properties.map { |property| property.primitive })
0
reader = command.execute_reader(*parameters)
0
@@ -296,7 +291,7 @@ module DataMapper
0
- close_connection(connection)
0
+ close_connection(connection) if connection
0
@@ -559,6 +554,7 @@ module DataMapper
0
def equality_operator(query, model_name, operator, property, qualify, value)
0
when Array then "#{property_to_column_name(model_name, property, qualify)} IN ?"
0
+ when Range then "#{property_to_column_name(model_name, property, qualify)} BETWEEN ?"
0
when NilClass then "#{property_to_column_name(model_name, property, qualify)} IS NULL"
0
when DataMapper::Query then
0
query.merge_sub_select_conditions(operator, property, value)
0
@@ -570,6 +566,7 @@ module DataMapper
0
def inequality_operator(query, model_name, operator, property, qualify, value)
0
when Array then "#{property_to_column_name(model_name, property, qualify)} NOT IN ?"
0
+ when Range then "#{property_to_column_name(model_name, property, qualify)} NOT BETWEEN ?"
0
when NilClass then "#{property_to_column_name(model_name, property, qualify)} IS NOT NULL"
0
when DataMapper::Query then
0
query.merge_sub_select_conditions(operator, property, value)