module Seam::ActiveRecord

Constants

VERSION

Public Class Methods

all() click to toggle source
# File lib/seam/active_record.rb, line 65
def self.all
  SeamEffort.all
end
create(effort) click to toggle source
# File lib/seam/active_record.rb, line 55
def self.create effort
  record = SeamEffort.new
  record.effort_id = effort.id
  record.next_step = effort.next_step
  record.next_execute_at = effort.next_execute_at
  record.complete = effort.complete || false
  record.data = effort.to_hash
  record.save!
end
destroy() click to toggle source
# File lib/seam/active_record.rb, line 69
def self.destroy
  SeamEffort.delete_all
end
find_all_pending_executions_by_step(step) click to toggle source
# File lib/seam/active_record.rb, line 20
def self.find_all_pending_executions_by_step step
  SeamEffort.where(next_step: step)
            .where('next_execute_at <= ?', Time.now)
            .map do |record|
              Seam::Effort.parse HashWithIndifferentAccess.new(record.data)
            end
end
find_by_effort_id(effort_id) click to toggle source
# File lib/seam/active_record.rb, line 13
def self.find_by_effort_id effort_id
  record = SeamEffort.where(effort_id: effort_id).first
  return nil unless record
  data = HashWithIndifferentAccess.new record.data
  Seam::Effort.parse data
end
find_something_to_do() click to toggle source
# File lib/seam/active_record.rb, line 28
def self.find_something_to_do
  #record = Seam::Mongodb.collection
             #.find( {
                      #next_execute_at: { '$lte' => Time.now },
                      #next_step:       { '$ne'  => nil },
                      #complete:        { '$in'  => [nil, false] },
                    #} )
             #.first
  record = SeamEffort.where('next_execute_at <= ?', Time.now)
                     .where.not(next_step: nil)
                     .where(complete: false)
                     .first
  return [] unless record
  [record].map do |x|
    Seam::Effort.parse HashWithIndifferentAccess.new(x.data)
  end
end
overwrite_the_persistence_layer() click to toggle source
# File lib/seam/active_record.rb, line 11
def self.overwrite_the_persistence_layer
  Seam::Persistence.class_eval do
    def self.find_by_effort_id effort_id
      record = SeamEffort.where(effort_id: effort_id).first
      return nil unless record
      data = HashWithIndifferentAccess.new record.data
      Seam::Effort.parse data
    end

    def self.find_all_pending_executions_by_step step
      SeamEffort.where(next_step: step)
                .where('next_execute_at <= ?', Time.now)
                .map do |record|
                  Seam::Effort.parse HashWithIndifferentAccess.new(record.data)
                end
    end

    def self.find_something_to_do
      #record = Seam::Mongodb.collection
                 #.find( {
                          #next_execute_at: { '$lte' => Time.now },
                          #next_step:       { '$ne'  => nil },
                          #complete:        { '$in'  => [nil, false] },
                        #} )
                 #.first
      record = SeamEffort.where('next_execute_at <= ?', Time.now)
                         .where.not(next_step: nil)
                         .where(complete: false)
                         .first
      return [] unless record
      [record].map do |x|
        Seam::Effort.parse HashWithIndifferentAccess.new(x.data)
      end
    end

    def self.save effort
      record = SeamEffort.where(effort_id: effort.id).first
      record.next_step = effort.next_step
      record.next_execute_at = effort.next_execute_at
      record.complete = effort.complete || false
      record.data = effort.to_hash
      record.save!
    end

    def self.create effort
      record = SeamEffort.new
      record.effort_id = effort.id
      record.next_step = effort.next_step
      record.next_execute_at = effort.next_execute_at
      record.complete = effort.complete || false
      record.data = effort.to_hash
      record.save!
    end

    def self.all
      SeamEffort.all
    end

    def self.destroy
      SeamEffort.delete_all
    end
  end
end
save(effort) click to toggle source
# File lib/seam/active_record.rb, line 46
def self.save effort
  record = SeamEffort.where(effort_id: effort.id).first
  record.next_step = effort.next_step
  record.next_execute_at = effort.next_execute_at
  record.complete = effort.complete || false
  record.data = effort.to_hash
  record.save!
end
setup() click to toggle source
# File lib/seam/active_record.rb, line 7
def self.setup
  overwrite_the_persistence_layer
end