package handlers import ( "fmt" "github.com/gin-gonic/gin" "github.com/niangaodev/art-code/models" "github.com/niangaodev/art-code/repositories" "github.com/niangaodev/art-code/utils" ) // 获取标签列表 func GetTags(c *gin.Context) { // 从数据库获取所有标签 tags, err := repositories.GetTags() if err != nil { utils.ServerError(c, err) return } // 构建响应 responses := repositories.BuildTagsResponse(tags) utils.Success(c, responses) } func GetTag(c *gin.Context) { // 解析标签ID idStr := c.Param("id") var id uint _, err := fmt.Sscanf(idStr, "%d", &id) if err != nil { utils.Error(c, 400, "Invalid tag ID") return } // 从数据库获取标签 tag, err := repositories.GetTagByID(id) if err != nil { utils.ServerError(c, err) return } if tag == nil { utils.Error(c, 404, "Tag not found") return } // 构建响应 response := repositories.BuildTagResponse(tag) utils.Success(c, response) } // 获取标签列表 (Admin) func AdminGetTags(c *gin.Context) { // 从数据库获取所有标签 tags, err := repositories.GetTags() if err != nil { utils.ServerError(c, err) return } utils.Success(c, repositories.BuildTagsResponse(tags)) } // 创建标签 func AdminCreateTag(c *gin.Context) { var tag models.Tag if err := c.ShouldBindJSON(&tag); err != nil { utils.Error(c, 400, "Invalid request") return } // 创建标签 if err := repositories.CreateTag(&tag); err != nil { utils.ServerError(c, err) return } utils.SuccessWithMsg(c, "Tag created successfully", nil) } // 更新标签 func AdminUpdateTag(c *gin.Context) { tagID := c.Param("id") var tag models.Tag if err := c.ShouldBindJSON(&tag); err != nil { utils.Error(c, 400, "Invalid request") return } // 转换标签ID为uint var idUint uint _, err := fmt.Sscanf(tagID, "%d", &idUint) if err != nil { utils.Error(c, 400, "Invalid tag ID") return } // 设置标签ID tag.ID = idUint // 更新标签 if err := repositories.UpdateTag(&tag); err != nil { utils.ServerError(c, err) return } utils.SuccessWithMsg(c, "Tag updated successfully", nil) } // 删除标签 func AdminDeleteTag(c *gin.Context) { tagID := c.Param("id") // 转换标签ID为uint var idUint uint _, err := fmt.Sscanf(tagID, "%d", &idUint) if err != nil { utils.Error(c, 400, "Invalid tag ID") return } // 删除标签 if err := repositories.DeleteTag(idUint); err != nil { utils.ServerError(c, err) return } utils.SuccessWithMsg(c, "Tag deleted successfully", nil) }