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

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/database/postgres_foreign_key.rb')
-rw-r--r--lib/gitlab/database/postgres_foreign_key.rb10
1 files changed, 10 insertions, 0 deletions
diff --git a/lib/gitlab/database/postgres_foreign_key.rb b/lib/gitlab/database/postgres_foreign_key.rb
index 04ef574a451..bb3e1d45f15 100644
--- a/lib/gitlab/database/postgres_foreign_key.rb
+++ b/lib/gitlab/database/postgres_foreign_key.rb
@@ -5,6 +5,8 @@ module Gitlab
class PostgresForeignKey < SharedModel
self.primary_key = :oid
+ has_many :child_foreign_keys, class_name: 'Gitlab::Database::PostgresForeignKey', foreign_key: 'parent_oid'
+
# These values come from the possible confdeltype / confupdtype values in pg_constraint
ACTION_TYPES = {
restrict: 'r',
@@ -38,6 +40,14 @@ module Gitlab
scope :by_constrained_table_name, ->(name) { where(constrained_table_name: name) }
+ scope :by_constrained_table_name_or_identifier, ->(name) do
+ if name =~ Database::FULLY_QUALIFIED_IDENTIFIER
+ by_constrained_table_identifier(name)
+ else
+ by_constrained_table_name(name)
+ end
+ end
+
scope :not_inherited, -> { where(is_inherited: false) }
scope :by_name, ->(name) { where(name: name) }