Skip to content
Snippets Groups Projects
Unverified Commit b66181da authored by Sébastien Gaya's avatar Sébastien Gaya Committed by GitHub
Browse files

indirect obj direct sources with deps (#1931)

parent e34ed80e
No related branches found
No related tags found
No related merge requests found
...@@ -35,14 +35,9 @@ module Communication::Website::WithGitRepository ...@@ -35,14 +35,9 @@ module Communication::Website::WithGitRepository
# Synchronisation optimale d'objet indirect # Synchronisation optimale d'objet indirect
def sync_indirect_object_with_git(indirect_object) def sync_indirect_object_with_git(indirect_object)
all_dependencies = [] indirect_object.direct_sources_with_dependencies.each do |dependency|
indirect_object.direct_sources.each do |direct_source|
all_dependencies = add_direct_source_to_sync(direct_source, array: all_dependencies)
end
all_dependencies.each do |dependency|
Communication::Website::GitFile.sync self, dependency Communication::Website::GitFile.sync self, dependency
end end
git_repository.sync! git_repository.sync!
end end
...@@ -93,20 +88,4 @@ module Communication::Website::WithGitRepository ...@@ -93,20 +88,4 @@ module Communication::Website::WithGitRepository
git_repository.update_theme_version! git_repository.update_theme_version!
end end
protected
def add_direct_source_to_sync(direct_source, array: [])
# Ne pas traiter les sources d'autres sites
return array unless direct_source.website.id == self.id
# Ne pas traiter les sources non synchronisables
return array unless direct_source.syncable?
# Ne pas traiter si la source directe est déjà dans le tableau de dépendances
return array if array.include?(direct_source)
array << direct_source
# On passe le tableau de dépendances à la méthode recursive_dependencies
# pour qu'il soit capable d'early return en cas de doublon
array += direct_source.recursive_dependencies(array: array, syncable_only: true)
# On ne synchronise pas les références de l'objet direct, car on ne le modifie pas lui.
array
end
end end
...@@ -52,6 +52,14 @@ module AsIndirectObject ...@@ -52,6 +52,14 @@ module AsIndirectObject
connections.collect &:direct_source connections.collect &:direct_source
end end
def direct_sources_with_dependencies
dependencies = []
direct_sources.each do |direct_source|
dependencies = add_direct_source_to_dependencies(direct_source, array: dependencies)
end
dependencies
end
protected protected
def direct_sources_from_reference(reference) def direct_sources_from_reference(reference)
...@@ -70,4 +78,19 @@ module AsIndirectObject ...@@ -70,4 +78,19 @@ module AsIndirectObject
end end
end end
def add_direct_source_to_dependencies(direct_source, array: [])
# Ne pas traiter les sources d'autres sites
return array unless direct_source.website.id == self.id
# Ne pas traiter les sources non synchronisables
return array unless direct_source.syncable?
# Ne pas traiter si la source directe est déjà dans le tableau de dépendances
return array if array.include?(direct_source)
array << direct_source
# On passe le tableau de dépendances à la méthode recursive_dependencies
# pour qu'il soit capable d'early return en cas de doublon
array += direct_source.recursive_dependencies(array: array, syncable_only: true)
# On ne synchronise pas les références de l'objet direct, car on ne le modifie pas lui.
array
end
end end
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment