# frozen_string_literal: true module Gitlab module GithubImport module Importer class MilestonesImporter include BulkImporting # rubocop: disable CodeReuse/ActiveRecord def existing_milestones @existing_milestones ||= project.milestones.pluck(:iid).to_set end # rubocop: enable CodeReuse/ActiveRecord def execute bulk_insert(Milestone, build_milestones) build_milestones_cache end def build_milestones build_database_rows(each_milestone) end def already_imported?(milestone) existing_milestones.include?(milestone.number) end def build_milestones_cache MilestoneFinder.new(project).build_cache end def build(milestone) { iid: milestone.number, title: milestone.title, description: milestone.description, project_id: project.id, state: state_for(milestone), due_date: milestone.due_on&.to_date, created_at: milestone.created_at, updated_at: milestone.updated_at } end def state_for(milestone) milestone.state == 'open' ? :active : :closed end def each_milestone client.milestones(project.import_source, state: 'all') end def object_type :milestone end end end end end