34 lines
1.1 KiB
Ruby
34 lines
1.1 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module Ci
|
|
class RunnerVersion < Ci::ApplicationRecord
|
|
include EachBatch
|
|
include EnumWithNil
|
|
|
|
enum_with_nil status: {
|
|
not_processed: nil,
|
|
invalid_version: -1,
|
|
unknown: 0,
|
|
not_available: 1,
|
|
available: 2,
|
|
recommended: 3
|
|
}
|
|
|
|
STATUS_DESCRIPTIONS = {
|
|
invalid_version: 'Runner version is not valid.',
|
|
unknown: 'Upgrade status is unknown.',
|
|
not_available: 'Upgrade is not available for the runner.',
|
|
available: 'Upgrade is available for the runner.',
|
|
recommended: 'Upgrade is available and recommended for the runner.'
|
|
}.freeze
|
|
|
|
# Override auto generated negative scope (from available) so the scope has expected behavior
|
|
scope :not_available, -> { where(status: :not_available) }
|
|
|
|
# This scope returns all versions that might need recalculating. For instance, once a version is considered
|
|
# :recommended, it normally doesn't change status even if the instance is upgraded
|
|
scope :potentially_outdated, -> { where(status: [nil, :not_available, :available, :unknown]) }
|
|
|
|
validates :version, length: { maximum: 2048 }
|
|
end
|
|
end
|