class ActiveAudit::StorageAdapters::ElasticsearchAdapter

Public Class Methods

new(options={}) click to toggle source
# File lib/active_audit/storage_adapters/elasticsearch_adapter.rb, line 8
def initialize options={}
  index  options['index'] || :auditing
  client ::Elasticsearch::Client.new url: options['url'] || 'localhost:9200'
  klass ActiveAudit::Audit
end

Public Instance Methods

find_by_record(record, options={}) click to toggle source
# File lib/active_audit/storage_adapters/elasticsearch_adapter.rb, line 39
def find_by_record record, options={}
  self.type "#{record.class.auditing_options[:type]}_events"
  query = {
    query: { filtered: { filter: { bool: { must: [{ term: { item_id: record.id }}]}}}},
    sort: { recorded_at: { order: "desc" }}
  }
  if options[:from] && options[:to]
    query[:query][:filtered][:filter][:bool][:must].push range: { recorded_at: { gte: options[:from], lt: options[:to] }}
  elsif options[:from]
    query[:query][:filtered][:filter][:bool][:must].push range: { recorded_at: { gte: options[:from] }}
  elsif options[:to]
    query[:query][:filtered][:filter][:bool][:must].push range: { recorded_at: { lt: options[:to] }}
  end
  if options[:comment]
    query[:query][:filtered][:filter][:bool][:must].push wildcard: { comment: "*#{options[:comment]}*" }
  end
  search(query).to_a
end
save(audit) click to toggle source
# File lib/active_audit/storage_adapters/elasticsearch_adapter.rb, line 60
def save audit
  self.send :gateway_save, audit, type: "#{audit.type}_events"
end