diff options
Diffstat (limited to 'app/services/packages/ml_model/create_package_file_service.rb')
-rw-r--r-- | app/services/packages/ml_model/create_package_file_service.rb | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/app/services/packages/ml_model/create_package_file_service.rb b/app/services/packages/ml_model/create_package_file_service.rb new file mode 100644 index 00000000000..574f70940fc --- /dev/null +++ b/app/services/packages/ml_model/create_package_file_service.rb @@ -0,0 +1,46 @@ +# frozen_string_literal: true + +module Packages + module MlModel + class CreatePackageFileService < BaseService + def execute + ::Packages::Package.transaction do + create_package_file(find_or_create_package) + end + end + + private + + def find_or_create_package + package_params = { + name: params[:package_name], + version: params[:package_version], + build: params[:build], + status: params[:status] + } + + package = ::Packages::MlModel::FindOrCreatePackageService + .new(project, current_user, package_params) + .execute + + package.update_column(:status, params[:status]) if params[:status] && params[:status] != package.status + + package.create_build_infos!(params[:build]) + + package + end + + def create_package_file(package) + file_params = { + file: params[:file], + size: params[:file].size, + file_sha256: params[:file].sha256, + file_name: params[:file_name], + build: params[:build] + } + + ::Packages::CreatePackageFileService.new(package, file_params).execute + end + end + end +end |