43 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| require 'db/mongo/models/statistic'
 | |
| require_relative "request_handler"
 | |
| 
 | |
| module Devops
 | |
|   module API3
 | |
|     module Handler
 | |
|       class Statistic < RequestHandler
 | |
| 
 | |
|         # supported options:
 | |
|         #   user
 | |
|         #   response_code (format: 200)
 | |
|         #   method
 | |
|         #   path
 | |
|         #   path_contains
 | |
|         #   date_from (format: timestamp)
 | |
|         #   date_till (format: timestamp)
 | |
|         #   limit: default 20. Zero value is equal to no limit.
 | |
|         #   sort_field: default 'created_at'. Could also be in [user, path, method, body, response_code, created_at].
 | |
|         #   sort_order: default 'asc'. Could also be 'desc'
 | |
|         def statistic
 | |
|           filters = @request.params
 | |
|           limit =extract_limit_params_for_searching(20)
 | |
|           sort = extract_sort_params_for_searching
 | |
|           query = {}
 | |
|           %w(user method path).each do |key|
 | |
|             val = filters[key]
 | |
|             query[key] = val if val
 | |
|           end
 | |
| 
 | |
|           query["response_code"] = filters["response_code"].to_i if filters["response_code"]
 | |
|           query["path"] = Regexp.new(filters["path_contains"], 'i') if filters["path_contains"]
 | |
| 
 | |
|           fill_date_params_for_searching(query)
 | |
| 
 | |
|           Devops::Model::Statistic.where(query).sort(sort).limit(limit)
 | |
|         end
 | |
| 
 | |
|       end
 | |
|     end
 | |
|   end
 | |
| end
 | |
| 
 | 
