Sha256: 8f2d8d50c14a322732a9e6886577ab0a02b1bb904bcf7f0f4c2ffa8ab70c4227

Contents?: true

Size: 1.1 KB

Versions: 1

Compression:

Stored size: 1.1 KB

Contents

pp caller
module Coupler
  module Models
    class Job < Sequel::Model
      include CommonModel

      many_to_one :resource
      many_to_one :scenario

      def percent_completed
        total > 0 ? completed * 100 / total : 0
      end

      def execute
        Logger.instance.info("Starting job #{id} (#{name})")
        case name
        when 'transform'
          update(:status => 'running', :started_at => Time.now, :total => resource.source_dataset_count)

          new_status = 'failed'
          begin
            resource.transform! { |n| update(:completed => completed + n) }
            new_status = 'done'
          ensure
            update(:status => new_status, :completed_at => Time.now)
          end

        when 'run_scenario'
          update(:status => 'running', :started_at => Time.now)

          new_status = 'failed'
          begin
            scenario.run!
            new_status = 'done'
          ensure
            update(:status => new_status, :completed_at => Time.now)
          end
        end
        Logger.instance.info("Job #{id} (#{name}) finished")
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
coupler-0.0.7-java lib/coupler/models/job.rb