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

review_requests_importer.rb « pull_requests « importer « github_import « gitlab « lib - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 0a92aee801d03c90ec934cb42f9ce00c2456f57e (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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# frozen_string_literal: true

module Gitlab
  module GithubImport
    module Importer
      module PullRequests
        class ReviewRequestsImporter
          include ParallelScheduling

          BATCH_SIZE = 100

          private

          def each_object_to_import(&block)
            merge_request_collection.each_batch(of: BATCH_SIZE, column: :iid) do |batch|
              batch.each do |merge_request|
                repo = project.import_source

                review_requests = client.pull_request_review_requests(repo, merge_request.iid)
                review_requests[:merge_request_id] = merge_request.id
                review_requests[:merge_request_iid] = merge_request.iid
                yield review_requests

                mark_merge_request_imported(merge_request)
              end
            end
          end

          def importer_class
            ReviewRequestImporter
          end

          def representation_class
            Gitlab::GithubImport::Representation::PullRequests::ReviewRequests
          end

          def sidekiq_worker_class
            Gitlab::GithubImport::PullRequests::ImportReviewRequestWorker
          end

          def collection_method
            :pull_request_review_requests
          end

          # rubocop:disable CodeReuse/ActiveRecord
          def merge_request_collection
            project.merge_requests
              .where.not(iid: already_imported_merge_requests)
              .select(:id, :iid)
          end
          # rubocop:enable CodeReuse/ActiveRecord

          def merge_request_imported_cache_key
            "github-importer/pull_requests/#{collection_method}/already-imported/#{project.id}"
          end

          def already_imported_merge_requests
            Gitlab::Cache::Import::Caching.values_from_set(merge_request_imported_cache_key)
          end

          def mark_merge_request_imported(merge_request)
            Gitlab::Cache::Import::Caching.set_add(
              merge_request_imported_cache_key,
              merge_request.iid
            )
          end
        end
      end
    end
  end
end