package controllers import ( "fmt" "main/mvc/models" "net/http" "strconv" "github.com/gin-gonic/gin" ) type СhangePostRequest struct { Postname string `form:"name" json:"name"` Tags string `form:"tags" json:"tags"` Body string `form:"body" json:"body"` } func AddPost(tmplname string, group *gin.RouterGroup, s *models.Site) { group.POST(fmt.Sprintf("/%s", tmplname), func(c *gin.Context) { var requestData СhangePostRequest // Привязка данных формы к структуре if err := c.ShouldBind(&requestData); err != nil { c.Redirect(http.StatusFound, "/index/1?Ошибка при привязке данных к структуре") return } models.AddPost(s.DB, "admin", requestData.Postname, requestData.Body, requestData.Tags) // Актуализация данных в ОЗУ s.Posts, _ = models.PostsListFromDB(s.DB) s.Tags = s.Posts.TagsMap() // c.Redirect(http.StatusFound, fmt.Sprintf("/post/%d?Пост создан", len(s.Posts))) }) } func EditPost(tmplname string, group *gin.RouterGroup, s *models.Site) { group.POST(fmt.Sprintf("/%s/:id", tmplname), func(c *gin.Context) { postIndex, err := strconv.Atoi(c.Param("id")) // Получаем параметр из URL if err != nil { c.Redirect(http.StatusFound, "/index/1?Ошибка при получении номера страницы") return } var requestData СhangePostRequest // Привязка данных формы к структуре if err := c.ShouldBind(&requestData); err != nil { c.Redirect(http.StatusFound, "/index/1?Ошибка при привязке данных к структуре") return } models.UpdatePost(s.DB, postIndex, "admin", requestData.Postname, requestData.Body, requestData.Tags) // Актуализация данных в ОЗУ s.Posts, _ = models.PostsListFromDB(s.DB) s.Tags = s.Posts.TagsMap() // c.Redirect(http.StatusFound, fmt.Sprintf("/post/%d?Пост обновлен", postIndex)) }) } func DeletePost(tmplname string, group *gin.RouterGroup, s *models.Site) { group.POST(fmt.Sprintf("/%s/:id", tmplname), func(c *gin.Context) { postIndex, err := strconv.Atoi(c.Param("id")) // Получаем параметр из URL if err != nil { c.Redirect(http.StatusFound, "/index/1?Ошибка при получении номера страницы") return } models.DelPost(s.DB, postIndex) // Актуализация данных в ОЗУ s.Posts, _ = models.PostsListFromDB(s.DB) s.Tags = s.Posts.TagsMap() // c.Redirect(http.StatusFound, "/index/1?Пост обновлен") }) }