diff --git a/Featurecreep.md b/Featurecreep.md index 5358c60770..c6584e5264 100644 --- a/Featurecreep.md +++ b/Featurecreep.md @@ -40,6 +40,8 @@ Ab v0.3 können wir mit clients anfangen. * [ ] Bearbeiten (abhaken) * [x] Löschen +* [ ] Swaggerdocs !!!! + #### v0.2 * [ ] Listen teilbar diff --git a/models/list_delete.go b/models/list_delete.go new file mode 100644 index 0000000000..6ab341aa24 --- /dev/null +++ b/models/list_delete.go @@ -0,0 +1,21 @@ +package models + +func DeleteListByID(listID int64) (err error) { + + // Check if the list exists + _, err = GetListByID(listID) + if err != nil { + return + } + + // Delete the list + _, err = x.ID(listID).Delete(&List{}) + if err != nil { + return + } + + // Delete all todoitems on that list + _, err = x.Where("list_id = ?", listID).Delete(&ListItem{}) + + return +} diff --git a/routes/api/v1/list_delete.go b/routes/api/v1/list_delete.go new file mode 100644 index 0000000000..e44647d0a5 --- /dev/null +++ b/routes/api/v1/list_delete.go @@ -0,0 +1,25 @@ +package v1 + +import ( + "github.com/labstack/echo" + "strconv" + "net/http" + "git.kolaente.de/konrad/list/models" +) + +func DeleteListByID(c echo.Context) error { + // Check if we have our ID + id := c.Param("id") + // Make int + itemID, err := strconv.ParseInt(id, 10, 64) + if err != nil { + return c.JSON(http.StatusBadRequest, models.Message{"Invalid ID."}) + } + + err = models.DeleteListByID(itemID) + if err != nil { + return c.JSON(http.StatusInternalServerError, models.Message{"An error occured."}) + } + + return c.JSON(http.StatusOK, models.Message{"The list was deleted with success."}) +} \ No newline at end of file diff --git a/routes/routes.go b/routes/routes.go index 4563232359..379826d7a8 100644 --- a/routes/routes.go +++ b/routes/routes.go @@ -58,6 +58,7 @@ func RegisterRoutes(e *echo.Echo) { a.GET("/lists/:id", apiv1.GetListByID) a.POST("/lists/:id", apiv1.AddOrUpdateList) a.PUT("/lists/:id", apiv1.AddOrUpdateListItem) + a.DELETE("/lists/:id", apiv1.DeleteListByID) a.DELETE("/item/:id", apiv1.DeleteListItemByIDtemByID) }