Sha256: 8d011e1d513ab5aef6d1790540c58d5d19f79b8fbe850a2a2b172ae8e0dd9cf1

Contents?: true

Size: 1.69 KB

Versions: 4

Compression:

Stored size: 1.69 KB

Contents

module Cellect
  module Server
    module Adapters
      class Default
        # Return a list of workflows to load in the form:
        #   [{
        #     'id' => 123,
        #     'name' => 'foo',
        #     'prioritized' => false,
        #     'pairwise' => false,
        #     'grouped' => false
        #   }, ...]
        def workflow_list(*names)
          raise NotImplementedError
        end
        
        # Load the data for a workflow, this method:
        #   Accepts a workflow
        #   Returns an array of hashes in the form:
        #   {
        #     'id' => 123,
        #     'priority' => 0.123,
        #     'group_id' => 456
        #   }
        def load_data_for(workflow_name)
          raise NotImplementedError
        end
        
        # Load seen ids for a user, this method:
        #   Accepts a workflow_name, and a user id
        #   Returns an array in the form:
        #   [1, 2, 3]
        def load_user(workflow_name, id)
          raise NotImplementedError
        end
        
        def load_workflows(*names)
          workflow_list(*names).each{ |workflow_info| load_workflow workflow_info }
        end
        
        def load_workflow(args)
          info = if args.is_a?(Hash)
            args
          elsif args.is_a?(String)
            workflow_list.select{ |h| h['name'] == args }.first
          else
            raise ArgumentError
          end
          
          workflow_for info
        end
        
        def workflow_for(opts = { })
          workflow_klass = opts.fetch('grouped', false) ? GroupedWorkflow : Workflow
          workflow_klass[opts['name']] = opts 
          workflow_klass[opts['name']]
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
cellect-server-0.1.3 lib/cellect/server/adapters/default.rb
cellect-server-0.1.2.pre.jruby lib/cellect/server/adapters/default.rb
cellect-server-0.1.2 lib/cellect/server/adapters/default.rb
cellect-server-0.1.1 lib/cellect/server/adapters/default.rb