Skip to content
Snippets Groups Projects
Commit 3670ff85 authored by Arnaud Levy's avatar Arnaud Levy
Browse files

wip

parent c480cb8f
No related branches found
No related tags found
No related merge requests found
......@@ -109,6 +109,10 @@ class Education::Program < ApplicationRecord
active_storage_blobs
end
def git_destroy_dependencies_static
explicit_active_storage_blobs
end
def update_children_paths
children.each do |child|
child.update_column :path, child.generated_path
......
......@@ -44,7 +44,7 @@ Lors de l'enregistrement d'un objet, il faut, pour chaque website :
- push
- mettre à jour les previous_path et les SHA des git_files
Ce flux cause un problème majeur : tout ce qui est analysé disparaît en asynchrone
Ce flux cause un problème majeur : tout ce qui est analysé disparaît en asynchrone.
### Version 2
......@@ -76,8 +76,6 @@ def reorder
pages.first.sync_with_git
end
```
TODO vérifier que tous les cas de déplacement sont correctement gérés.
TODO gérer la suppression correctement.
## Code
......@@ -89,17 +87,19 @@ Le website a un trait WithRepository qui gère son rapport avec le repository Gi
Tous les objets qui doivent être exportés vers Git :
- doivent utiliser le concern `WithGit`, qui gère l'export vers les repositories des objets et de leurs dépendances
- doivent présenter une méthode `websites`, éventuellement avec un seul website dans un tableau
- peuvent intégrer le concern `WithMedia` s'il utilise des médias (`featured_image` et/ou images dans des rich texts)
- peuvent présenter une méthode `static_files` qui liste les identifiants des git_files à générer, pour les objets qui créent plusieurs fichiers
- peuvent présenter une méthode `identifiers` qui liste les identifiants des git_files à générer, pour les objets qui créent plusieurs fichiers (le fichier par défaut s'appelle `static`)
- peuvent présenter une méthode `git_dependencies_static` qui liste les dépendances de l'identifiant par défaut `static`
- peuvent présenter une méthode `git_destroy_dependencies_static` qui liste les dépendances à supprimer en cascade de l'identifiant par défaut `static`
- peuvent présenter des méthodes `git_dependencies_author` et/ou `git_destroy_dependencies_author` qui liste les dépendances de l'identifiant `author`
### GitFile
### Modèle Communication::Website::GitFile
La responsabilité de la synchronisation repose sur Communication::Website::GitFile, notamment :
- l'information est-elle intègre, synchronisée avec le repo ? (previous_sha et previous_path cohérents avec le repo git)
- le fichier doit-il être créé ? (non intègre, ou pas de previous_sha/previous_path)
- le fichier doit-il être mis à jour ? (non intègre, ou previous_sha/previous_path différent du sha/path)
- le fichier doit-il être supprimé ? (TODO)
- le fichier doit-il être créé ? (pas à supprimer et (non intègre, ou pas de previous_sha/previous_path))
- le fichier doit-il être mis à jour ? (pas à supprimer et (non intègre, ou previous_sha/previous_path différent du sha/path))
- le fichier doit-il être supprimé ? (path nil ou marquage à détruire)
Pour cela, le git_file dispose des propriétés suivantes :
......
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