Class: RailsPulse::DeploymentsController

Inherits:
ApplicationController show all
Defined in:
app/controllers/rails_pulse/deployments_controller.rb

Instance Method Summary collapse

Methods inherited from ApplicationController

#set_global_filters, #set_time_range

Methods included from PaginationConcern

#set_pagination_limit

Instance Method Details

#createObject



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'app/controllers/rails_pulse/deployments_controller.rb', line 6

def create
  deployment = RailsPulse::Deployment.new(
    revision:    deployment_params[:revision],
    started_at:  deployment_params[:started_at].presence || Time.current,
    finished_at: deployment_params[:finished_at].presence,
    metadata:    deployment_params[:metadata]&.to_json
  )

  if deployment.save
    render json: { status: "created", id: deployment.id, revision: deployment.revision,
                   started_at: deployment.started_at, finished_at: deployment.finished_at }, status: :created
  else
    render json: { status: "error", errors: deployment.errors.full_messages },
           status: :unprocessable_content
  end
end

#finishObject



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'app/controllers/rails_pulse/deployments_controller.rb', line 23

def finish
  deployment = RailsPulse::Deployment
    .where(revision: finish_params[:revision])
    .order(started_at: :desc)
    .first

  return render json: { status: "error", error: "Deployment not found" }, status: :not_found unless deployment

  deployment.finished_at = finish_params[:finished_at].presence || Time.current

  if deployment.save
    render json: { status: "updated", id: deployment.id, revision: deployment.revision,
                   started_at: deployment.started_at, finished_at: deployment.finished_at }
  else
    render json: { status: "error", errors: deployment.errors.full_messages },
           status: :unprocessable_content
  end
end