class Qyu::Workflow

Qyu::Workflow

Attributes

created_at[R]
descriptor[R]
id[R]
name[R]
updated_at[R]

Public Class Methods

count() click to toggle source
# File lib/qyu/models/workflow.rb, line 61
def count
  Qyu.store.count_workflows
end
create(name:, descriptor:) click to toggle source
# File lib/qyu/models/workflow.rb, line 17
def create(name:, descriptor:)
  validator = Qyu::Concerns::WorkflowDescriptorValidator.new(descriptor)
  fail Qyu::Errors::WorkflowDescriptorValidationError, validator.errors unless validator.valid?
  id = persist(name, descriptor)
  time = Time.now
  new(id, name, descriptor, time, time)
end
delete(id) click to toggle source
# File lib/qyu/models/workflow.rb, line 51
def delete(id)
  Qyu.store.delete_workflow(id)
end
delete_by(name: nil, id: nil) click to toggle source
# File lib/qyu/models/workflow.rb, line 55
def delete_by(name: nil, id: nil)
  raise ArgumentError, 'specify either name or id' if (name && id) || (name.nil? && id.nil?)
  Qyu.store.delete_workflow_by_name(name) if name
  delete(id) if id
end
find(id, raise_error: true) click to toggle source
# File lib/qyu/models/workflow.rb, line 25
def find(id, raise_error: true)
  workflow_attrs = Qyu.store.find_workflow(id)
  raise Qyu::Errors::WorkflowNotFound.new(:id, id) if workflow_attrs.nil? && raise_error
  return nil if workflow_attrs.nil?
  new(id, workflow_attrs['name'], workflow_attrs['descriptor'])
end
find_by(name: nil, id: nil) click to toggle source
# File lib/qyu/models/workflow.rb, line 32
def find_by(name: nil, id: nil)
  return find_by_name(name) if name
  return find(id, raise_error: false) if id
end
find_by!(name: nil, id: nil) click to toggle source
# File lib/qyu/models/workflow.rb, line 37
def find_by!(name: nil, id: nil)
  workflow = find_by(name: name, id: id)
  raise Qyu::Errors::WorkflowNotFound.new(:id, id) if workflow.nil? && id
  raise Qyu::Errors::WorkflowNotFound.new(:id, id) if workflow.nil? && id
  workflow
end
new(id, name, descriptor, created_at = nil, updated_at = nil) click to toggle source
# File lib/qyu/models/workflow.rb, line 8
def initialize(id, name, descriptor, created_at = nil, updated_at = nil)
  @id = id
  @name = name
  @descriptor = descriptor
  @created_at = created_at
  @updated_at = updated_at
end
select(limit: 30, offset: 0, order: :asc) click to toggle source
# File lib/qyu/models/workflow.rb, line 44
def select(limit: 30, offset: 0, order: :asc)
  workflow_records = Qyu.store.select_workflows(limit, offset, order)
  workflow_records.map do |record|
    new(record['id'], record['name'], record['descriptor'])
  end
end

Private Class Methods

find_by_name(name) click to toggle source
# File lib/qyu/models/workflow.rb, line 71
def find_by_name(name)
  workflow_attrs = Qyu.store.find_workflow_by_name(name)
  return nil unless workflow_attrs
  new(workflow_attrs['id'], workflow_attrs['name'], workflow_attrs['descriptor'])
end
persist(name, descriptor) click to toggle source
# File lib/qyu/models/workflow.rb, line 67
def persist(name, descriptor)
  Qyu.store.persist_workflow(name, descriptor)
end

Public Instance Methods

[](attribute) click to toggle source
# File lib/qyu/models/workflow.rb, line 78
def [](attribute)
  public_send(attribute)
end