tuist/projects/cloud/app/services/project_delete_service.rb

47 lines
992 B
Ruby

# frozen_string_literal: true
class ProjectDeleteService < ApplicationService
module Error
class Unauthorized < CloudError
def message
"You do not have a permission to delete this project."
end
end
class ProjectNotFound < CloudError
attr_reader :id
def initialize(id)
@id = id
end
def message
"Project with id #{id} was not found."
end
end
end
attr_reader :id, :deleter
def initialize(id:, deleter:)
super()
@id = id
@deleter = deleter
end
def call
project = ProjectFetchService.new.fetch_by_id(project_id: id, user: deleter)
raise Error::Unauthorized.new unless ProjectPolicy.new(deleter, project).update?
project.destroy
end
def s3_client
Aws::S3::Client.new(
region: "eu-west-1",
access_key_id: Rails.application.credentials.aws[:access_key_id],
secret_access_key: Rails.application.credentials.aws[:secret_access_key],
)
end
end