From 85c6a3743abe5683c2317f1957a9f047ad2b4b8e Mon Sep 17 00:00:00 2001
From: Yorick Peterse <yorickpeterse@gmail.com>
Date: Wed, 7 Oct 2015 12:30:10 +0200
Subject: [PATCH] Added methods for detecting MySQL/PostgreSQL

These two methods remove the need for manually going into
ActiveRecord::Base.connection all over the place.
---
 lib/gitlab/database.rb           | 11 +++++++++++
 spec/lib/gitlab/database_spec.rb | 17 +++++++++++++++++
 2 files changed, 28 insertions(+)
 create mode 100644 lib/gitlab/database.rb
 create mode 100644 spec/lib/gitlab/database_spec.rb

diff --git a/lib/gitlab/database.rb b/lib/gitlab/database.rb
new file mode 100644
index 00000000000..741a52714ac
--- /dev/null
+++ b/lib/gitlab/database.rb
@@ -0,0 +1,11 @@
+module Gitlab
+  module Database
+    def self.mysql?
+      ActiveRecord::Base.connection.adapter_name.downcase == 'mysql'
+    end
+
+    def self.postgresql?
+      ActiveRecord::Base.connection.adapter_name.downcase == 'postgresql'
+    end
+  end
+end
diff --git a/spec/lib/gitlab/database_spec.rb b/spec/lib/gitlab/database_spec.rb
new file mode 100644
index 00000000000..7cdebdf209a
--- /dev/null
+++ b/spec/lib/gitlab/database_spec.rb
@@ -0,0 +1,17 @@
+require 'spec_helper'
+
+describe Gitlab::Database do
+  # These are just simple smoke tests to check if the methods work (regardless
+  # of what they may return).
+  describe '.mysql?' do
+    subject { described_class.mysql? }
+
+    it { is_expected.to satisfy { |val| val == true || val == false } }
+  end
+
+  describe '.postgresql?' do
+    subject { described_class.postgresql? }
+
+    it { is_expected.to satisfy { |val| val == true || val == false } }
+  end
+end
-- 
GitLab