Class: Bucket

Inherits:
Object
  • Object
show all
Includes:
Mongoid::Document, Mongoid::Timestamps
Defined in:
app/models/bucket.rb

Instance Method Summary collapse

Instance Method Details

#clear_historyObject



39
40
41
42
43
44
45
# File 'app/models/bucket.rb', line 39

def clear_history
  # requests and responses are capped collections in production, we cannot delete docs on a capped collection
  # so we filter these objects by the history_start_at to "clear"
  # db.runCommand({ "convertToCapped": "requests",  size: 25000000 });
  # db.runCommand({ "convertToCapped": "responses", size: 25000000 });
  update_attribute :history_start_at, Time.now
end

#first_request_atObject



67
68
69
# File 'app/models/bucket.rb', line 67

def first_request_at
  requests.order(:created_at.asc).first.try(:created_at)
end

#last_requestObject



55
56
57
# File 'app/models/bucket.rb', line 55

def last_request
  requests.order(:created_at.desc).first
end

#last_request_atObject



63
64
65
# File 'app/models/bucket.rb', line 63

def last_request_at
  last_request.try(:created_at)
end

#last_responseObject



59
60
61
# File 'app/models/bucket.rb', line 59

def last_response
  responses.order(:created_at.desc).first
end

#nameObject



47
48
49
50
51
52
53
# File 'app/models/bucket.rb', line 47

def name
  if (name = read_attribute(:name)).blank?
    token
  else
    name
  end
end

#requestsObject



24
25
26
27
28
29
30
# File 'app/models/bucket.rb', line 24

def requests
  # I couldn't make has_many + conditions work with Mongoid
  # requests must be filtered by created_at
  # see clear_history

  Request.where(bucket_id: id).gte(created_at: history_start_at || created_at).order(:created_at.desc)
end

#requests_countObject



71
72
73
# File 'app/models/bucket.rb', line 71

def requests_count
  requests.count
end

#responsesObject



32
33
34
35
36
37
# File 'app/models/bucket.rb', line 32

def responses
  # I couldn't make has_many + conditions work with Mongoid
  # responses must be filtered by created_at
  # see clear_history
  Response.where(bucket_id: id).gte(created_at: history_start_at || created_at).order(:created_at.desc)
end