def initialize(sess, opt)
raise "db_uri must be specified" unless opt["db_uri"]
uri = URI.parse opt["db_uri"]
raise "Invalid URI scheme: #{uri.scheme}" unless uri.scheme == "mysql"
dbname = uri.path.split("/").reject{|p|p.empty?}.first
@mysql = ::Mysql.new uri.host, uri.user, uri.password, dbname, uri.port
raise "restore_query must be specified" unless opt["restore_query"]
raise "update_query must be specified" unless opt["update_query"]
raise "delete_query must be specified" unless opt["delete_query"]
@restore_stmt = @mysql.prepare opt["restore_query"]
@update_stmt = @mysql.prepare opt["update_query"]
@delete_stmt = @mysql.prepare opt["delete_query"]
@restore_stmt.execute sess.session_id
data, = @restore_stmt.fetch
unless sess.new_session or data
raise CGI::Session::NoSession, "uninitialized session"
end
@session_id = sess.session_id
@data = nil
end