lib/riddle/query.rb in riddle-1.4.0 vs lib/riddle/query.rb in riddle-1.5.0
- old
+ new
@@ -1,86 +1,97 @@
module Riddle::Query
def self.connection(address = '127.0.0.1', port = 9312)
require 'mysql2'
-
+
# If you use localhost, MySQL insists on a socket connection, but Sphinx
# requires a TCP connection. Using 127.0.0.1 fixes that.
address = '127.0.0.1' if address == 'localhost'
-
+
Mysql2::Client.new(
:host => address,
:port => port
)
end
-
+
def self.meta
'SHOW META'
end
-
+
def self.warnings
'SHOW WARNINGS'
end
-
+
def self.status
'SHOW STATUS'
end
-
+
def self.tables
'SHOW TABLES'
end
-
+
def self.variables
'SHOW VARIABLES'
end
-
+
def self.collation
'SHOW COLLATION'
end
-
+
def self.describe(index)
"DESCRIBE #{index}"
end
-
+
def self.begin
'BEGIN'
end
-
+
def self.commit
'COMMIT'
end
-
+
def self.rollback
'ROLLBACK'
end
-
+
def self.set(variable, values, global = true)
values = "(#{values.join(', ')})" if values.is_a?(Array)
"SET#{ ' GLOBAL' if global } #{variable} = #{values}"
end
-
+
def self.snippets(data, index, query, options = nil)
options = ', ' + options.keys.collect { |key|
"#{options[key]} AS #{key}"
}.join(', ') unless options.nil?
-
+
"CALL SNIPPETS('#{data}', '#{index}', '#{query}'#{options})"
end
-
+
def self.create_function(name, type, file)
type = type.to_s.upcase
"CREATE FUNCTION #{name} RETURNS #{type} SONAME '#{file}'"
end
-
+
def self.drop_function(name)
"DROP FUNCTION #{name}"
end
-
+
def self.update(index, id, values = {})
values = values.keys.collect { |key|
- "#{key} = #{values[key]}"
+ "#{key} = #{translate_value values[key]}"
}.join(', ')
-
+
"UPDATE #{index} SET #{values} WHERE id = #{id}"
+ end
+
+ def self.translate_value(value)
+ case value
+ when TrueClass
+ 1
+ when FalseClass
+ 0
+ else
+ value
+ end
end
end
require 'riddle/query/delete'
require 'riddle/query/insert'