| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- package v1
- import (
- "github.com/runningwater/gohub/app/models/topic"
- "github.com/runningwater/gohub/app/policies"
- "github.com/runningwater/gohub/app/requests"
- "github.com/runningwater/gohub/pkg/auth"
- "github.com/runningwater/gohub/pkg/response"
- "github.com/gin-gonic/gin"
- )
- type TopicsController struct {
- BaseApiController
- }
- func (ctrl *TopicsController) Index(c *gin.Context) {
- request := requests.PaginationRequest{}
- if ok := requests.Validate(c, &request, requests.Pagination); !ok {
- return
- }
- data, pager := topic.Paginate(c, 10)
- response.JSON(c, gin.H{
- "data": data,
- "pager": pager,
- })
- }
- func (ctrl *TopicsController) Store(c *gin.Context) {
- request := requests.TopicRequest{}
- if ok := requests.Validate(c, &request, requests.TopicSave); !ok {
- return
- }
- topicModel := topic.Topic{
- Title: request.Title,
- Body: request.Body,
- CategoryID: request.CategoryID,
- UserID: auth.CurrentUID(c),
- }
- topicModel.Create()
- if topicModel.ID > 0 {
- response.Created(c, topicModel)
- } else {
- response.Abort500(c, "创建失败,请稍后尝试~")
- }
- }
- func (ctrl *TopicsController) Update(c *gin.Context) {
- topicModel := topic.Get(c.Param("id"))
- if topicModel.ID == 0 {
- response.Abort404(c)
- return
- }
- request := requests.TopicRequest{}
- if ok := requests.Validate(c, &request, requests.TopicSave); !ok {
- return
- }
- if !policies.CanModifyTopic(c, topicModel) {
- response.Abort403(c)
- return
- }
- topicModel.Title = request.Title
- topicModel.Body = request.Body
- topicModel.CategoryID = request.CategoryID
- rowsAffected := topicModel.Save()
- if rowsAffected > 0 {
- response.Data(c, topicModel)
- } else {
- response.Abort500(c, "更新失败,请稍后尝试~")
- }
- }
- func (ctrl *TopicsController) Delete(c *gin.Context) {
- topicModel := topic.Get(c.Param("id"))
- if topicModel.ID == 0 {
- response.Abort404(c)
- return
- }
- if !policies.CanModifyTopic(c, topicModel) {
- response.Abort403(c)
- return
- }
- rowsAffected := topicModel.Delete()
- if rowsAffected > 0 {
- response.Success(c)
- return
- }
- response.Abort500(c, "删除失败,请稍后尝试~")
- }
|