Class: Tasker::TasksController
- Inherits:
-
ApplicationController
- Object
- ActionController::API
- ApplicationController
- Tasker::TasksController
- Includes:
- PageSort
- Defined in:
- app/controllers/tasker/tasks_controller.rb
Instance Method Summary collapse
-
#create ⇒ Object
POST /tasks.
-
#destroy ⇒ Object
DELETE /tasks/1.
-
#index ⇒ Object
GET /tasks.
-
#show ⇒ Object
GET /tasks/1.
-
#update ⇒ Object
PATCH/PUT /tasks/1.
Methods included from PageSort
#build_page_sort_params, #page_sort_params
Instance Method Details
#create ⇒ Object
POST /tasks
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'app/controllers/tasker/tasks_controller.rb', line 36 def create if task_params_as_symbolized_hash[:name].blank? return render(status: :bad_request, json: { error: 'invalid parameters: requires task name' }) end set_task_request begin # Use namespace and version from task request for handler lookup handler = handler_factory.get( @task_request.name, namespace_name: @task_request.namespace, version: @task_request.version ) @task = handler.initialize_task!(@task_request) rescue Tasker::ProceduralError => e @task = Tasker::Task.new @task.errors.add(:name, e.to_s) rescue StandardError => e @task = Tasker::Task.new = "Handler error for #{@task_request.namespace}.#{@task_request.name}@#{@task_request.version}: #{e.}" @task.errors.add(:handler, ) end # we don't want to re-run save here because it will remove the # context validation from the handler and check "valid?" if @task.errors.empty? render(json: @task, status: :created, adapter: :json, root: :task, serializer: Tasker::TaskSerializer) else render(status: :bad_request, json: { error: @task.errors }) end end |
#destroy ⇒ Object
DELETE /tasks/1
78 79 80 81 82 |
# File 'app/controllers/tasker/tasks_controller.rb', line 78 def destroy # Use state machine to transition task to cancelled @task.state_machine.transition_to!(Tasker::Constants::TaskStatuses::CANCELLED) render(status: :ok, json: { cancelled: true }) end |
#index ⇒ Object
GET /tasks
15 16 17 18 19 |
# File 'app/controllers/tasker/tasks_controller.rb', line 15 def index @tasks = query_base.limit(page_sort_params[:limit]).offset(page_sort_params[:offset]).order(page_sort_params[:order]).all render(json: @tasks, status: :ok, adapter: :json, root: :tasks, each_serializer: Tasker::TaskSerializer) end |
#show ⇒ Object
GET /tasks/1
22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'app/controllers/tasker/tasks_controller.rb', line 22 def show include_dependencies = ActiveModel::Type::Boolean.new.cast(params[:include_dependencies]) render( json: @task, status: :ok, adapter: :json, root: :task, serializer: Tasker::TaskSerializer, include_dependencies: include_dependencies ) end |
#update ⇒ Object
PATCH/PUT /tasks/1
69 70 71 72 73 74 75 |
# File 'app/controllers/tasker/tasks_controller.rb', line 69 def update if @task.update(update_task_params) render(json: @task, status: :ok, adapter: :json, root: :task, serializer: Tasker::TaskSerializer) else render(json: { error: @task.errors }, status: :unprocessable_entity) end end |