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 | ||
|  | 
 |