module Obscured::Timeline::Record::ClassMethods

Public Instance Methods

by(params = {}, options = {}) click to toggle source
# File lib/obscured-timeline/record.rb, line 52
def by(params = {}, options = {})
  limit = options[:limit].blank? ? nil : options[:limit].to_i
  skip = options[:skip].blank? ? nil : options[:skip].to_i
  order = options[:order].blank? ? :created_at.desc : options[:order]
  only = options[:only].blank? ? %i[id type message producer created_at updated_at proprietor] : options[:only]

  query = {}
  query[:type] = params[:type].to_sym if params[:type]
  query[:severity] = params[:severity].to_sym if params[:severity]
  query[:producer] = params[:producer].to_sym if params[:producer]
  params[:proprietor]&.map { |k, v| query.merge!("proprietor.#{k}" => v) }

  criterion = where(query).only(only).limit(limit).skip(skip)
  criterion = criterion.order_by(order) if order

  docs = criterion.to_a
  docs
end
make(params = {}) click to toggle source
# File lib/obscured-timeline/record.rb, line 30
def make(params = {})
  raise ArgumentError, 'type missing' if params[:type].blank?
  raise ArgumentError, 'type must be a symbol' unless params[:type].instance_of?(Symbol)
  raise ArgumentError, 'message missing' if params[:message].nil?
  raise ArgumentError, 'producer missing' if params[:producer].blank?
  raise ArgumentError, 'proprietor missing' if params[:proprietor].blank?

  doc = new
  doc.type = params[:type]
  doc.severity = params[:severity].to_sym unless params[:severity].blank?
  doc.message = params[:message]
  doc.producer = params[:producer]
  doc.proprietor = params[:proprietor]
  doc
end
make!(params = {}) click to toggle source
# File lib/obscured-timeline/record.rb, line 46
def make!(params = {})
  doc = make(params)
  doc.save!
  doc
end