Sha256: 9758e83670d85e98774867a0d7d763ef5cd8fdc79aa332e58bc9366c707cc633

Contents?: true

Size: 956 Bytes

Versions: 2

Compression:

Stored size: 956 Bytes

Contents

require "sinatra"
require "erubis"

module Clickhouse
  class CLI < Thor
    class Server < Sinatra::Base
      include Client

      set :views, File.expand_path("../server/views", __FILE__)
      set :public_folder, File.expand_path("../server/assets", __FILE__)

      get "/" do
        erb :index
      end

      post "/" do
        sql = prettify(params[:sql]).gsub(/\s+;$/, ";")
        alter_history(sql, false)
        begin
          execute(sql) do |result, log|
            content_type :json
            {
              :urls => Clickhouse.connection.pond.available.collect(&:url),
              :history => Readline::HISTORY.to_a.collect(&:strip),
              :names => result.names,
              :data => result.to_a,
              :stats => log.sub("\e[1m\e[36m", "").sub("\e[0m", "").strip
            }.to_json
          end
        rescue Clickhouse::Error => e
          halt 500, e.message
        end
      end

    end
  end
end

Version data entries

2 entries across 2 versions & 2 rubygems

Version Path
ch-client-0.0.1 lib/clickhouse/cli/server.rb
clickhouse-0.1.10 lib/clickhouse/cli/server.rb