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

models_index_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: 57900165ad18928bd40ac1ae4c6cd5df5c6a9d2a (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
# frozen_string_literal: true

module Projects
  module Ml
    class ModelsIndexComponent < ViewComponent::Base
      attr_reader :paginator

      def initialize(paginator:)
        @paginator = paginator
      end

      private

      def view_model
        vm = {
          models: models_view_model,
          page_info: page_info_view_model
        }

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

      def models_view_model
        paginator.records.map(&:present).map do |m|
          {
            name: m.name,
            version: m.latest_version_name,
            version_count: m.version_count,
            path: m.latest_package_path
          }
        end
      end

      def page_info_view_model
        {
          has_next_page: paginator.has_next_page?,
          has_previous_page: paginator.has_previous_page?,
          start_cursor: paginator.cursor_for_previous_page,
          end_cursor: paginator.cursor_for_next_page
        }
      end
    end
  end
end