1# frozen_string_literal: true
2module Gitlab
3  module PhabricatorImport
4    module Issues
5      class Importer
6        def initialize(project, after = nil)
7          @project = project
8          @after = after
9        end
10
11        def execute
12          schedule_next_batch
13
14          tasks_response.tasks.each do |task|
15            TaskImporter.new(project, task).execute
16          end
17        end
18
19        private
20
21        attr_reader :project, :after
22
23        def schedule_next_batch
24          return unless tasks_response.pagination.has_next_page?
25
26          Gitlab::PhabricatorImport::ImportTasksWorker
27            .schedule(project.id, tasks_response.pagination.next_page)
28        end
29
30        def tasks_response
31          @tasks_response ||= client.tasks(after: after)
32        end
33
34        def client
35          @client ||=
36            Gitlab::PhabricatorImport::Conduit::Maniphest
37              .new(phabricator_url: project.import_data.data['phabricator_url'],
38                   api_token: project.import_data.credentials[:api_token])
39        end
40      end
41    end
42  end
43end
44