Sha256: 5b97658de708c2104d0a16a6681fdda78cb4f139460e72e16113af6121a08ec6

Contents?: true

Size: 1.73 KB

Versions: 11

Compression:

Stored size: 1.73 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

        # Report adapter status as a Hash
        def status
          { }
        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

11 entries across 11 versions & 1 rubygems

Version Path
cellect-server-2.1.0 lib/cellect/server/adapters/default.rb
cellect-server-2.0.1 lib/cellect/server/adapters/default.rb
cellect-server-2.0.0 lib/cellect/server/adapters/default.rb
cellect-server-2.0.0.beta4 lib/cellect/server/adapters/default.rb
cellect-server-2.0.0.beta3 lib/cellect/server/adapters/default.rb
cellect-server-2.0.0.beta2 lib/cellect/server/adapters/default.rb
cellect-server-2.0.0.beta1 lib/cellect/server/adapters/default.rb
cellect-server-1.3.3 lib/cellect/server/adapters/default.rb
cellect-server-1.3.2 lib/cellect/server/adapters/default.rb
cellect-server-1.3.1 lib/cellect/server/adapters/default.rb
cellect-server-1.3.0 lib/cellect/server/adapters/default.rb