From 6ef91a92e55a3bde16b2502c0a2353fb4af7076e Mon Sep 17 00:00:00 2001 From: nemunaire Date: Sat, 9 Dec 2017 10:54:16 +0100 Subject: [PATCH] Perform full deep synchronisation --- admin/api/theme.go | 2 ++ admin/sync/full.go | 27 +++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 admin/sync/full.go diff --git a/admin/api/theme.go b/admin/api/theme.go index 5d966c09..c339b226 100644 --- a/admin/api/theme.go +++ b/admin/api/theme.go @@ -45,6 +45,8 @@ func init() { router.GET("/api/remote/themes/:thid/exercices", apiHandler(themeHandler(sync.ApiListRemoteExercices))) // Synchronize + router.GET("/api/sync/deep", apiHandler( + func(_ httprouter.Params, _ []byte) (interface{}, error) { return sync.SyncDeep(sync.GlobalImporter), nil })) router.GET("/api/sync/themes", apiHandler( func(_ httprouter.Params, _ []byte) (interface{}, error) { return sync.SyncThemes(sync.GlobalImporter), nil })) router.GET("/api/sync/themes/:thid/exercices", apiHandler(themeHandler( diff --git a/admin/sync/full.go b/admin/sync/full.go new file mode 100644 index 00000000..e895a4f7 --- /dev/null +++ b/admin/sync/full.go @@ -0,0 +1,27 @@ +package sync + +import ( + "srs.epita.fr/fic-server/libfic" +) + +func SyncDeep(i Importer) map[string][]string { + errs := map[string][]string{} + + errs["_themes"] = SyncThemes(i) + + if themes, err := fic.GetThemes(); err == nil { + for _, theme := range themes { + errs[theme.Name] = SyncExercices(i, theme) + + if exercices, err := theme.GetExercices(); err == nil { + for _, exercice := range exercices { + errs[theme.Name] = append(errs[theme.Name], SyncExerciceFiles(i, exercice)...) + errs[theme.Name] = append(errs[theme.Name], SyncExerciceHints(i, exercice)...) + errs[theme.Name] = append(errs[theme.Name], SyncExerciceKeys(i, exercice)...) + } + } + } + } + + return errs +}