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

milestone_mixin.rb « migrations « database « gitlab « lib - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 10bc0c192e74487f8a0d2dada94f4e4dcfb7a92c (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
# frozen_string_literal: true

module Gitlab
  module Database
    module Migrations
      module MilestoneMixin
        extend ActiveSupport::Concern
        include Gitlab::ClassAttributes

        MilestoneNotSetError = Class.new(StandardError)

        class_methods do
          def milestone(milestone_str = nil)
            if milestone_str.present?
              set_class_attribute(:migration_milestone, milestone_str)
            else
              get_class_attribute(:migration_milestone)
            end
          end
        end

        def initialize(name = class_name, version = nil, type = nil)
          raise MilestoneNotSetError, "Milestone is not set for #{self.class.name}" if milestone.nil?

          super(name, version)
          @version = Gitlab::Database::Migrations::Version.new(version, milestone, type)
        end

        def milestone # rubocop:disable Lint/DuplicateMethods
          @milestone ||= self.class.milestone
        end
      end
    end
  end
end