def commit
new_row = []
@inserts.each do |expr|
expr.row.each do |key, value|
new_row[key] = value
end
rows(expr.entity.external_name) << new_row
@rows_affected += 1
end
@updates.each do |expr|
rows = rows expr.entity.external_name
to_update = rows_hash_for_expr expr
to_update.each do |old_row, diff_row|
index = rows.index old_row
new_row = old_row.dup
diff_row.each do |key, value|
new_row[key] = value
end
rows[index] = new_row
end
@rows_affected += 1
end
@deletes.each do |expr|
rows = rows expr.entity.external_name
to_delete = rows_hash_for_expr expr
to_delete.each_key do |row|
rows.delete row
end
@rows_affected += 1
end
@rows.each do |entity, new_rows|
write(entity, new_rows)
end
clear
end