From 0887a8c8fce4fb3f9bd034a9ca887d755029dd0a Mon Sep 17 00:00:00 2001 From: amartynov Date: Tue, 2 Dec 2014 16:13:48 +0300 Subject: [PATCH] reports filters --- devops-service/db/mongo/mongo_connector.rb | 25 ++++++++++++++++++++-- devops-service/report.rb | 6 +++++- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/devops-service/db/mongo/mongo_connector.rb b/devops-service/db/mongo/mongo_connector.rb index 912833e..a3f7ca5 100644 --- a/devops-service/db/mongo/mongo_connector.rb +++ b/devops-service/db/mongo/mongo_connector.rb @@ -1,4 +1,5 @@ require "mongo" +require "date" require "db/exceptions/record_not_found" require "db/exceptions/invalid_record" @@ -367,8 +368,28 @@ class MongoConnector @reports.insert(r.to_mongo_hash) end - def reports - @reports.find().to_a.map{|e| Report.new(e)} + def reports options={} + date = {} + if options.has_key?("date_from") or options.has_key?("date_to") + if options.has_key?("date_from") + begin + d = Date.parse(options["date_from"]) + date["$gte"] = d.to_time + rescue ArgumentError + end + end + if options.has_key?("date_to") + begin + d = Date.parse(options["date_to"]) + date["$lt"] = d.to_time + rescue ArgumentError + end + end + options.delete("date_from") + options.delete("date_to") + options["created_at"] = date unless date.empty? + end + @reports.find(options).to_a.map{|e| Report.new(e)} end def report id diff --git a/devops-service/report.rb b/devops-service/report.rb index 2dcee47..65f4eae 100644 --- a/devops-service/report.rb +++ b/devops-service/report.rb @@ -10,7 +10,11 @@ class ReportRoutes < Sinatra::Base enable :inline_templates get "/all" do - json DevopsService.mongo.reports.map{|r| r.to_hash} + options = {} + ["project", "deploy_env", "type", "created_by", "date_from", "date_to"].each do |k| + options[k] = params[k] unless params[k].nil? + end + json DevopsService.mongo.reports(options).map{|r| r.to_hash} =begin res = {} uri = URI.parse(request.url)