Welcome to mirror list, hosted at ThFree Co, Russian Federation.

show_ml_model_component.rb « ml « projects « components « app - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 424c8e262e2c253ef051c4a98ac107ca644e73b6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# frozen_string_literal: true

module Projects
  module Ml
    class ShowMlModelComponent < ViewComponent::Base
      attr_reader :model, :current_user

      def initialize(model:, current_user:)
        @model = model.present
        @current_user = current_user
      end

      private

      def view_model
        vm = {
          model: {
            id: model.id,
            name: model.name,
            path: model.path,
            description: model.description,
            latest_version: latest_version_view_model,
            version_count: model.version_count,
            candidate_count: model.candidate_count
          }
        }

        Gitlab::Json.generate(vm.deep_transform_keys { |k| k.to_s.camelize(:lower) })
      end

      def latest_version_view_model
        return unless model.latest_version

        model_version = model.latest_version.present

        {
          version: model_version.version,
          description: model_version.description,
          path: model_version.path,
          project_path: project_path(model_version.project),
          package_id: model_version.package_id,
          **::Ml::CandidateDetailsPresenter.new(model_version.candidate, current_user).present
        }
      end
    end
  end
end