From fe014295acc7a1b5f32f017df7911719dca19d13 Mon Sep 17 00:00:00 2001
From: AlexisPoyen <apoyen@grandlyon.com>
Date: Fri, 10 Jul 2020 16:12:25 +0200
Subject: [PATCH] Refactor : factorize code to get capturer and deskround

---
 internal/models/capturerDeskRound.go | 32 +++++++++++++++-------------
 1 file changed, 17 insertions(+), 15 deletions(-)

diff --git a/internal/models/capturerDeskRound.go b/internal/models/capturerDeskRound.go
index eeb51ee..b6fbb08 100644
--- a/internal/models/capturerDeskRound.go
+++ b/internal/models/capturerDeskRound.go
@@ -48,14 +48,9 @@ func (d *DataHandler) postCapturerDeskRound(w http.ResponseWriter, r *http.Reque
 		http.Error(w, err.Error(), http.StatusInternalServerError)
 		return
 	}
-	var capturer Capturer
-	if err := d.db.First(&capturer, o.CapturerID).Error; err != nil {
-		http.Error(w, ErrorIDDoesNotExist, http.StatusNotFound)
-		return
-	}
 
-	var deskRound DeskRound
-	if err := d.db.First(&deskRound, o.DeskRoundID).Error; err != nil {
+	flag, capturer, deskRound := d.checkCapturerAndDeskRound(o)
+	if !flag {
 		http.Error(w, ErrorIDDoesNotExist, http.StatusNotFound)
 		return
 	}
@@ -72,18 +67,25 @@ func (d *DataHandler) deleteCapturerDeskRound(w http.ResponseWriter, r *http.Req
 		http.Error(w, err.Error(), http.StatusInternalServerError)
 		return
 	}
-	var capturer Capturer
-	if err := d.db.First(&capturer, o.CapturerID).Error; err != nil {
-		http.Error(w, ErrorIDDoesNotExist, http.StatusNotFound)
-		return
-	}
 
-	var deskRound DeskRound
-	if err := d.db.First(&deskRound, o.DeskRoundID).Error; err != nil {
+	flag, capturer, deskRound := d.checkCapturerAndDeskRound(o)
+	if !flag {
 		http.Error(w, ErrorIDDoesNotExist, http.StatusNotFound)
-		return
 	}
 
 	d.db.Model(&capturer).Association("DeskRounds").Delete(&deskRound)
 	json.NewEncoder(w).Encode(capturer)
 }
+
+func (d *DataHandler) checkCapturerAndDeskRound(o capturerDeskRound) (bool, Capturer, DeskRound) {
+	var capturer Capturer
+	var deskRound DeskRound
+	if err := d.db.First(&capturer, o.CapturerID).Error; err != nil {
+		return false, capturer, deskRound
+	}
+
+	if err := d.db.First(&deskRound, o.DeskRoundID).Error; err != nil {
+		return false, capturer, deskRound
+	}
+	return true, capturer, deskRound
+}
-- 
GitLab