summaryrefslogtreecommitdiff
path: root/lib/gitlab/config_checker/external_database_checker.rb
blob: ff20833b5be8baec0843189d442b37cc575e9050 (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
# frozen_string_literal: true

module Gitlab
  module ConfigChecker
    module ExternalDatabaseChecker
      extend self

      PG_REQUIREMENTS_LINK =
        '<a href="https://docs.gitlab.com/ee/install/requirements.html#database">database requirements</a>'

      def check
        unsupported_databases = Gitlab::Database
          .database_base_models
          .each_with_object({}) do |(database_name, base_model), databases|
            database = Gitlab::Database::Reflection.new(base_model)

            databases[database_name] = database unless database.postgresql_minimum_supported_version?
          end

        unsupported_databases.map do |database_name, database|
          {
            type: 'warning',
            message: _('Database \'%{database_name}\' is using PostgreSQL %{pg_version_current}, ' \
                       'but PostgreSQL %{pg_version_minimum} is required for this version of GitLab. ' \
                       'Please upgrade your environment to a supported PostgreSQL version, ' \
                       'see %{pg_requirements_url} for details.') % \
              {
                database_name: database_name,
                pg_version_current: database.version,
                pg_version_minimum: Gitlab::Database::MINIMUM_POSTGRES_VERSION,
                pg_requirements_url: PG_REQUIREMENTS_LINK
              }
          }
        end
      end
    end
  end
end