request.rb 1.3 KB
# == Schema Information
#
# Table name: v_libras_requests
#
#  id           :integer          not null, primary key
#  status       :string(255)
#  service_type :string(255)
#  owner_id     :integer
#  params       :text
#  response     :text
#  created_at   :datetime
#  updated_at   :datetime
#

class VLibras::Request < ActiveRecord::Base
  serialize :params

  belongs_to :owner, :class => User

  has_one :video, :class => VLibras::Video

  validates :service_type,
              presence: true,
              inclusion: { in: %w(video-subtitle video), message: "%{value} is not a valid service type" }

  validates :status,
            presence: true,
            inclusion: { in: %w(created processing error success), message: "%{value} is not a valid service type" }

  before_save :default_values

  default_scope { order('created_at DESC') }

  def self.build_from_params(params, user)
    request = self.new

    request.service_type = params[:service]
    request.owner = user

    request.params = params[:params]

    request
  end

  def perform_request
    logger.debug '[VLibras::Request] Starting request'

    ApiClient::Client.submit(self)

    logger.debug '[VLibras::Request] Request done'
  end
  handle_asynchronously :perform_request

private
  def default_values
    self.status ||= 'created'
  end
end