diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-05-17 19:05:49 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-05-17 19:05:49 +0300 |
commit | 43a25d93ebdabea52f99b05e15b06250cd8f07d7 (patch) | |
tree | dceebdc68925362117480a5d672bcff122fb625b /app/models/namespaces | |
parent | 20c84b99005abd1c82101dfeff264ac50d2df211 (diff) |
Add latest changes from gitlab-org/gitlab@16-0-stable-eev16.0.0-rc42
Diffstat (limited to 'app/models/namespaces')
-rw-r--r-- | app/models/namespaces/ldap_setting.rb | 11 | ||||
-rw-r--r-- | app/models/namespaces/project_namespace.rb | 2 | ||||
-rw-r--r-- | app/models/namespaces/traversal/linear.rb | 30 | ||||
-rw-r--r-- | app/models/namespaces/traversal/linear_scopes.rb | 8 |
4 files changed, 36 insertions, 15 deletions
diff --git a/app/models/namespaces/ldap_setting.rb b/app/models/namespaces/ldap_setting.rb new file mode 100644 index 00000000000..73125d347cc --- /dev/null +++ b/app/models/namespaces/ldap_setting.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +module Namespaces + class LdapSetting < ApplicationRecord + belongs_to :namespace, inverse_of: :namespace_ldap_settings + validates :namespace, presence: true + + self.primary_key = :namespace_id + self.table_name = 'namespace_ldap_settings' + end +end diff --git a/app/models/namespaces/project_namespace.rb b/app/models/namespaces/project_namespace.rb index 2a2ea11ddc5..cf2612b7f33 100644 --- a/app/models/namespaces/project_namespace.rb +++ b/app/models/namespaces/project_namespace.rb @@ -11,6 +11,8 @@ module Namespaces alias_attribute :namespace_id, :parent_id has_one :project, foreign_key: :project_namespace_id, inverse_of: :project_namespace + delegate :execute_hooks, :execute_integrations, to: :project, allow_nil: true + def self.sti_name 'Project' end diff --git a/app/models/namespaces/traversal/linear.rb b/app/models/namespaces/traversal/linear.rb index 0e9760832af..9006f104c64 100644 --- a/app/models/namespaces/traversal/linear.rb +++ b/app/models/namespaces/traversal/linear.rb @@ -117,17 +117,13 @@ module Namespaces traversal_ids.present? end - def use_traversal_ids_for_root_ancestor? - return false unless Feature.enabled?(:use_traversal_ids_for_root_ancestor) - - traversal_ids.present? - end - def root_ancestor - return super unless use_traversal_ids_for_root_ancestor? - strong_memoize(:root_ancestor) do - if parent_id.nil? + if association(:parent).loaded? && parent.present? + # This case is possible when parent has not been persisted or we're inside a transaction. + parent.root_ancestor + elsif parent_id.nil? + # There is no parent, so we are the root ancestor. self else Namespace.find_by(id: traversal_ids.first) @@ -215,6 +211,16 @@ module Namespaces hierarchy_order == :desc ? traversal_ids : traversal_ids.reverse end + def parent=(obj) + super(obj) + set_traversal_ids + end + + def parent_id=(id) + super(id) + set_traversal_ids + end + private attr_accessor :transient_traversal_ids @@ -232,11 +238,11 @@ module Namespaces end def set_traversal_ids + return if id.blank? + # This is a temporary guard and will be removed. return if is_a?(Namespaces::ProjectNamespace) - return unless Feature.enabled?(:set_traversal_ids_on_save, root_ancestor) - self.transient_traversal_ids = if parent_id parent.traversal_ids + [id] else @@ -244,7 +250,7 @@ module Namespaces end # Clear root_ancestor memo if changed. - if read_attribute(traversal_ids)&.first != transient_traversal_ids.first + if read_attribute(:traversal_ids)&.first != transient_traversal_ids.first clear_memoization(:root_ancestor) end diff --git a/app/models/namespaces/traversal/linear_scopes.rb b/app/models/namespaces/traversal/linear_scopes.rb index 843de9bce33..792964a6c7f 100644 --- a/app/models/namespaces/traversal/linear_scopes.rb +++ b/app/models/namespaces/traversal/linear_scopes.rb @@ -27,9 +27,11 @@ module Namespaces def self_and_ancestors(include_self: true, upto: nil, hierarchy_order: nil) return super unless use_traversal_ids_for_ancestor_scopes? - self_and_ancestors_from_inner_join(include_self: include_self, - upto: upto, hierarchy_order: - hierarchy_order) + self_and_ancestors_from_inner_join( + include_self: include_self, + upto: upto, hierarchy_order: + hierarchy_order + ) end def self_and_ancestor_ids(include_self: true) |