• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

pulibrary / tigerdata-app / cd8753f2-5ef8-4824-b1e2-6a35cce73972

01 Aug 2025 03:42PM UTC coverage: 75.995% (-2.0%) from 77.946%
cd8753f2-5ef8-4824-b1e2-6a35cce73972

Pull #1657

circleci

web-flow
Merge branch 'main' into i1632-save-data-users
Pull Request #1657: Add data users to a project after it is created in mediaflux

0 of 74 new or added lines in 3 files covered. (0.0%)

2216 of 2916 relevant lines covered (75.99%)

321.66 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/app/operations/project_create.rb
1
# frozen_string_literal: true
NEW
2
class CreateProject < Dry::Operation
×
NEW
3
  def call(request)
×
NEW
4
    project = step create_project_from_request(request)
×
NEW
5
    mediaflux_id = step persist_in_mediaflux(project)
×
NEW
6
    step persist_users_in_mediaflux(project, mediaflux_id)
×
NEW
7
    Success project
×
NEW
8
  end
×
9

NEW
10
  private
×
11

NEW
12
    def create_project_from_request(_request)
×
NEW
13
      project_metadata_json = RequestProjectMetadata.convert(self)
×
14
      # Create the project in the Rails database
NEW
15
      project = Project.create!({ metadata_json: project_metadata_json })
×
NEW
16
      project.draft_doi
×
NEW
17
      project.save!
×
NEW
18
      Success project
×
19
      # Return Success(attrs) or Failure(error)
NEW
20
    end
×
21

NEW
22
    def persist_in_mediaflux(project)
×
23
      # Create the project in Mediaflux
NEW
24
      request = Mediaflux::ProjectCreateServiceRequest.new(session_token: current_user.mediaflux_session, project: self)
×
NEW
25
      request.resolve
×
26

NEW
27
      if request.mediaflux_id.to_i == 0
×
NEW
28
        raise ProjectCreateError, "Error saving project #{id} to Mediaflux: #{request.response_error}. Debug output: #{request.debug_output}"
×
NEW
29
      end
×
30

NEW
31
      project.mediaflux_id = request.mediaflux_id
×
NEW
32
      project.metadata_model.status = Project::APPROVED_STATUS
×
NEW
33
      project.save!
×
NEW
34
      Success project.mediaflux_id
×
35
      # Return Success(user) or Failure(error)
NEW
36
    end
×
37

NEW
38
    def persist_users_in_mediaflux(_project, _mediaflux_id)
×
39
      # Add the data users to the project in Mediaflux
NEW
40
      add_users_request = Mediaflux::ProjectUserAddRequest.new(session_token: current_user.mediaflux_session, project: self)
×
NEW
41
      add_users_request.resolve
×
42

NEW
43
      user_debug = add_users_request.debug_output.to_s
×
NEW
44
      Rails.logger.error "Project #{id} users have been added to MediaFlux: #{user_debug}"
×
NEW
45
      Success true
×
46
      # Return Success(true) or Failure(error)
NEW
47
    end
×
NEW
48
end
×
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc