require 'rockset' require 'colorize' require 'json'
$query = ''
def input
begin print 'RockSQL-1.1$ ' begin line = gets rescue Interrupt puts input end line[line[-1]] = '' if line[-1] == ';' $query.slice! ';' if $query != '' line = ' ' + line end $query = $query + line if $query.include? '"' puts 'QueryError'.yellow + ': \'"\' in query' input end Rockset.auth(api_key=ENV['ROCKSET_TOKEN'], server=ENV['ROCKSET_SERVER'] || 'api.rs2.usw2.rockset.com') result = Rockset.query($query) if result['message'] if result['type'] == 'QueryError' err_location = ' Line: ' + result['line'].to_s + ' Column: ' + result['column'].to_s else err_location = '' end err_msg = result['type'].yellow + ': ' + result['message'] + err_location puts err_msg $last_result = err_msg else query_results = JSON.pretty_generate result['results'] puts query_results $last_result = query_results end $last_query = $query $query = '' elsif line == 'help' puts puts 'RockSQL: A complete Rockset SQL shell.'.green puts 'Version: 1.1' puts 'Guide: ' + 'http://gadhagod.github.io/RockSQL'.underline puts elsif line == 'clear' system 'clear' elsif line == 'reset' $query = '' elsif line == 'exit' abort elsif line == 'staged' puts $query elsif line == 'last query' puts $last_query elsif line == 'last res' || line == 'last result' puts $last_result elsif line == 'last restage' $query = $last_query elsif line.start_with? 'last save' line.slice! 'last save ' if line == '' || line == 'last save' puts 'InvalidFile'.yellow + ': You need to specify a valid filename' input end File.open(line, 'w') { |file| file.write $last_result } elsif line == '' else if $query != '' line = ' ' + line end $query = $query + line end input rescue => error puts 'RubyError: '.red + error.class.to_s + ': ' + error.message $query = '' input end
end
input