| package controller | |
| import ( | |
| "github.com/gin-gonic/gin" | |
| "net/http" | |
| "one-api/common" | |
| "one-api/model" | |
| "strconv" | |
| "strings" | |
| ) | |
| func GetAllChannels(c *gin.Context) { | |
| p, _ := strconv.Atoi(c.Query("p")) | |
| if p < 0 { | |
| p = 0 | |
| } | |
| channels, err := model.GetAllChannels(p*common.ItemsPerPage, common.ItemsPerPage, false) | |
| if err != nil { | |
| c.JSON(http.StatusOK, gin.H{ | |
| "success": false, | |
| "message": err.Error(), | |
| }) | |
| return | |
| } | |
| c.JSON(http.StatusOK, gin.H{ | |
| "success": true, | |
| "message": "", | |
| "data": channels, | |
| }) | |
| return | |
| } | |
| func SearchChannels(c *gin.Context) { | |
| keyword := c.Query("keyword") | |
| channels, err := model.SearchChannels(keyword) | |
| if err != nil { | |
| c.JSON(http.StatusOK, gin.H{ | |
| "success": false, | |
| "message": err.Error(), | |
| }) | |
| return | |
| } | |
| c.JSON(http.StatusOK, gin.H{ | |
| "success": true, | |
| "message": "", | |
| "data": channels, | |
| }) | |
| return | |
| } | |
| func GetChannel(c *gin.Context) { | |
| id, err := strconv.Atoi(c.Param("id")) | |
| if err != nil { | |
| c.JSON(http.StatusOK, gin.H{ | |
| "success": false, | |
| "message": err.Error(), | |
| }) | |
| return | |
| } | |
| channel, err := model.GetChannelById(id, false) | |
| if err != nil { | |
| c.JSON(http.StatusOK, gin.H{ | |
| "success": false, | |
| "message": err.Error(), | |
| }) | |
| return | |
| } | |
| c.JSON(http.StatusOK, gin.H{ | |
| "success": true, | |
| "message": "", | |
| "data": channel, | |
| }) | |
| return | |
| } | |
| func AddChannel(c *gin.Context) { | |
| channel := model.Channel{} | |
| err := c.ShouldBindJSON(&channel) | |
| if err != nil { | |
| c.JSON(http.StatusOK, gin.H{ | |
| "success": false, | |
| "message": err.Error(), | |
| }) | |
| return | |
| } | |
| channel.CreatedTime = common.GetTimestamp() | |
| keys := strings.Split(channel.Key, "\n") | |
| channels := make([]model.Channel, 0) | |
| for _, key := range keys { | |
| if key == "" { | |
| continue | |
| } | |
| localChannel := channel | |
| localChannel.Key = key | |
| channels = append(channels, localChannel) | |
| } | |
| err = model.BatchInsertChannels(channels) | |
| if err != nil { | |
| c.JSON(http.StatusOK, gin.H{ | |
| "success": false, | |
| "message": err.Error(), | |
| }) | |
| return | |
| } | |
| c.JSON(http.StatusOK, gin.H{ | |
| "success": true, | |
| "message": "", | |
| }) | |
| return | |
| } | |
| func DeleteChannel(c *gin.Context) { | |
| id, _ := strconv.Atoi(c.Param("id")) | |
| channel := model.Channel{Id: id} | |
| err := channel.Delete() | |
| if err != nil { | |
| c.JSON(http.StatusOK, gin.H{ | |
| "success": false, | |
| "message": err.Error(), | |
| }) | |
| return | |
| } | |
| c.JSON(http.StatusOK, gin.H{ | |
| "success": true, | |
| "message": "", | |
| }) | |
| return | |
| } | |
| func UpdateChannel(c *gin.Context) { | |
| channel := model.Channel{} | |
| err := c.ShouldBindJSON(&channel) | |
| if err != nil { | |
| c.JSON(http.StatusOK, gin.H{ | |
| "success": false, | |
| "message": err.Error(), | |
| }) | |
| return | |
| } | |
| err = channel.Update() | |
| if err != nil { | |
| c.JSON(http.StatusOK, gin.H{ | |
| "success": false, | |
| "message": err.Error(), | |
| }) | |
| return | |
| } | |
| c.JSON(http.StatusOK, gin.H{ | |
| "success": true, | |
| "message": "", | |
| "data": channel, | |
| }) | |
| return | |
| } | |