diff --git a/backend/handlers/handle_rowing.go b/backend/handlers/handle_rowing.go index ce8ba18..fcd9c89 100644 --- a/backend/handlers/handle_rowing.go +++ b/backend/handlers/handle_rowing.go @@ -82,6 +82,13 @@ func (store *Store) CreateRowing(ctx *gin.Context) { } encoded := base64.StdEncoding.EncodeToString(data) + // Reject duplicates: same EXIF datetime already recorded + var existing models.Rowing + if err := store.DB.Where("date = ?", dateTaken).First(&existing).Error; err == nil { + ctx.JSON(http.StatusConflict, gin.H{"error": "duplicate entry for this date"}) + return + } + // Build the message with an image + text prompt message, err := store.ClaudeClient.Messages.New(context.Background(), anthropic.MessageNewParams{ Model: anthropic.ModelClaudeHaiku4_5, @@ -176,13 +183,6 @@ No text, no markdown, no explanation. Just the JSON object.`), return } - // Reject duplicates: same EXIF datetime already recorded - var existing models.Rowing - if err := store.DB.Where("date = ?", dateTaken).First(&existing).Error; err == nil { - ctx.JSON(http.StatusConflict, gin.H{"error": "duplicate entry for this date"}) - return - } - calories := float64(extractedData.Distance) / 7500.0 * 500.0 rowing := models.Rowing{