40 lines
1 KiB
Ruby
40 lines
1 KiB
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
module Deployments
|
||
|
class CreateService
|
||
|
attr_reader :environment, :current_user, :params
|
||
|
|
||
|
def initialize(environment, current_user, params)
|
||
|
@environment = environment
|
||
|
@current_user = current_user
|
||
|
@params = params
|
||
|
end
|
||
|
|
||
|
def execute
|
||
|
create_deployment.tap do |deployment|
|
||
|
AfterCreateService.new(deployment).execute if deployment.persisted?
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def create_deployment
|
||
|
environment.deployments.create(deployment_attributes)
|
||
|
end
|
||
|
|
||
|
def deployment_attributes
|
||
|
# We use explicit parameters here so we never by accident allow parameters
|
||
|
# to be set that one should not be able to set (e.g. the row ID).
|
||
|
{
|
||
|
cluster_id: environment.deployment_platform&.cluster_id,
|
||
|
project_id: environment.project_id,
|
||
|
environment_id: environment.id,
|
||
|
ref: params[:ref],
|
||
|
tag: params[:tag],
|
||
|
sha: params[:sha],
|
||
|
user: current_user,
|
||
|
on_stop: params[:on_stop],
|
||
|
status: params[:status]
|
||
|
}
|
||
|
end
|
||
|
end
|
||
|
end
|