Class: Bucket

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#requestObject

temporally hack



17
18
19
# File 'app/models/bucket.rb', line 17

def request
  @request
end

Instance Method Details

#clear_historyObject



43
44
45
46
47
48
49
# File 'app/models/bucket.rb', line 43

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.zone.now
end

#first_requestObject



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

def first_request
  requests.order(:created_at.asc).first
end

#first_request_atObject



75
76
77
# File 'app/models/bucket.rb', line 75

def first_request_at
  first_request&.created_at
end

#last_requestObject



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

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

#last_request_atObject



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

def last_request_at
  last_request&.created_at
end

#last_responseObject



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

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

#nameObject



51
52
53
54
55
56
57
# File 'app/models/bucket.rb', line 51

def name
  if (name = self[:name]).blank?
    token
  else
    name
  end
end

#requestsObject



27
28
29
30
31
32
33
# File 'app/models/bucket.rb', line 27

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

#responsesObject



35
36
37
38
39
40
41
# File 'app/models/bucket.rb', line 35

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