// Package handler — notify channel CRUD + per-channel test endpoint. package handler import ( "net/http" "github.com/gin-gonic/gin" "github.com/ShukeBta/MediaStationGo/internal/service" ) func listNotifyChannelsHandler(svc *service.Container) gin.HandlerFunc { return func(c *gin.Context) { rows, err := svc.NotifyChannels.List(c.Request.Context()) if err != nil { c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) return } if rows == nil { c.JSON(http.StatusOK, []struct{}{}) return } c.JSON(http.StatusOK, rows) } } func createNotifyChannelHandler(svc *service.Container) gin.HandlerFunc { return func(c *gin.Context) { var in service.ChannelInput if err := c.ShouldBindJSON(&in); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } row, err := svc.NotifyChannels.Create(c.Request.Context(), in) if err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } c.JSON(http.StatusOK, row) } } func updateNotifyChannelHandler(svc *service.Container) gin.HandlerFunc { return func(c *gin.Context) { var in service.ChannelInput if err := c.ShouldBindJSON(&in); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } row, err := svc.NotifyChannels.Update(c.Request.Context(), c.Param("id"), in) if err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } c.JSON(http.StatusOK, row) } } func deleteNotifyChannelHandler(svc *service.Container) gin.HandlerFunc { return func(c *gin.Context) { if err := svc.NotifyChannels.Delete(c.Request.Context(), c.Param("id")); err != nil { c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) return } c.Status(http.StatusNoContent) } } func testNotifyChannelHandler(svc *service.Container) gin.HandlerFunc { return func(c *gin.Context) { if err := svc.NotifyChannels.Test(c.Request.Context(), c.Param("id")); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } c.JSON(http.StatusOK, gin.H{"message": "test sent"}) } }