48/add-complete (#53)

Closes #48

Reviewed-on: #53
This commit was merged in pull request #53.
This commit is contained in:
2025-05-18 08:00:29 +02:00
parent 238aedb5c9
commit b5aae3be3d
7 changed files with 224 additions and 24 deletions

View File

@@ -207,6 +207,11 @@ func deleteUserAllowance(c *gin.Context) {
return
}
if allowanceId == 0 {
c.JSON(http.StatusBadRequest, gin.H{"error": "Allowance id zero cannot be deleted"})
return
}
exists, err := db.UserExists(userId)
if err != nil {
log.Printf(ErrCheckingUserExist, err)
@@ -268,7 +273,11 @@ func putUserAllowance(c *gin.Context) {
return
}
err = db.UpdateAllowance(userId, allowanceId, &allowanceRequest)
if allowanceId == 0 {
err = db.UpdateUserAllowance(userId, &allowanceRequest)
} else {
err = db.UpdateAllowance(userId, allowanceId, &allowanceRequest)
}
if err != nil {
log.Printf("Error updating allowance: %v", err)
c.JSON(http.StatusInternalServerError, gin.H{"error": ErrInternalServerError})
@@ -410,6 +419,29 @@ func deleteTask(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{"message": "Task deleted successfully"})
}
func completeTask(c *gin.Context) {
taskIdStr := c.Param("taskId")
taskId, err := strconv.Atoi(taskIdStr)
if err != nil {
log.Printf("Invalid task ID: %v", err)
c.JSON(http.StatusBadRequest, gin.H{"error": "Invalid task ID"})
return
}
err = db.CompleteTask(taskId)
if errors.Is(err, mysqlite.ErrNoRows) {
c.JSON(http.StatusNotFound, gin.H{"error": "Task not found"})
return
}
if err != nil {
log.Printf("Error completing task: %v", err)
c.JSON(http.StatusInternalServerError, gin.H{"error": ErrInternalServerError})
return
}
c.JSON(http.StatusOK, gin.H{"message": "Task completed successfully"})
}
func postHistory(c *gin.Context) {
userIdStr := c.Param("userId")
userId, err := strconv.Atoi(userIdStr)
@@ -491,6 +523,7 @@ func start(ctx context.Context, config *ServerConfig) {
router.GET("/api/task/:taskId", getTask)
router.PUT("/api/task/:taskId", putTask)
router.DELETE("/api/task/:taskId", deleteTask)
router.POST("/api/task/:taskId/complete", completeTask)
srv := &http.Server{
Addr: config.Addr,