Commit c746bddf authored by Paul Asmuth's avatar Paul Asmuth
Browse files

redis backend stub

parent 461cfe36
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -4,7 +4,11 @@ class FnordQuery::RedisBackend
  	@opts = opts
  end

  def subscribe(opts, &block)
  def subscribe(query, &block)

  end

  def on_finish(&block)

  end

+12 −1
Original line number Diff line number Diff line
@@ -6,9 +6,10 @@ class FnordQuery::Query
  X_EXTRACT  = /(([a-z]+)\(([^\)]*)\))/
  FUNCTIONS  = %w(filter since until stream)

  attr_accessor :since, :until, :filters
  attr_accessor :raw, :since, :until, :filters

  def initialize(str)
    @raw = str
    @filters = []

    unless str.match(X_VALIDATE)
@@ -20,6 +21,16 @@ class FnordQuery::Query
    end
  end

  def execute(runner, backend)
    puts backend.inspect
    backend.on_finish do
      runner.send(:shutdown, true)
    end
    backend.subscribe(self) do

    end
  end

private

  def eval_part(func, arg) 
+27 −5
Original line number Diff line number Diff line
@@ -45,21 +45,43 @@ class FnordQuery::Runner
      puts "error: no backend specified"
    end

    #backend = @opts...
    @task = nil

    if @opts[:task].first == "query"
      begin
        query = FnordQuery::Query.new(@opts[:task].last)
        @task =  FnordQuery::Query.new(@opts[:task].last)
      rescue FnordQuery::Query::InvalidQueryError => e
        puts e.to_s
        exit!(1)
        puts e.to_s; exit!(1)
      end
      puts @task.inspect
    end

    EM.run do

      trap("TERM", &method(:shutdown))
      trap("INT",  &method(:shutdown))

      @backend = get_backend(*@opts[:backend])

      EM.next_tick do
        @task.execute(self, @backend)
      end
      puts query.inspect

    end
  end

private

  def shutdown(graceful = false)
    puts "shutting down, byebye" unless graceful
    EM.stop
  end

  def get_backend(klass, opts)
    klass[0] = klass[0].upcase
    FnordQuery.const_get("#{klass}Backend").new(opts)
  end

  def print_usage
    print_version
    print_help