turash/bugulma/backend/internal/handler/settings_admin_handler.go
2025-12-15 10:06:41 +01:00

54 lines
1.5 KiB
Go

package handler
import (
"net/http"
"bugulma/backend/internal/service"
"github.com/gin-gonic/gin"
)
type SettingsAdminHandler struct {
settingsSvc *service.SettingsService
}
func NewSettingsAdminHandler(settingsSvc *service.SettingsService) *SettingsAdminHandler {
return &SettingsAdminHandler{settingsSvc: settingsSvc}
}
// GetMaintenance returns current maintenance setting
// @Summary Get maintenance settings
// @Tags admin
// @Produce json
// @Success 200 {object} service.MaintenanceSetting
// @Router /api/v1/admin/settings/maintenance [get]
func (h *SettingsAdminHandler) GetMaintenance(c *gin.Context) {
m, err := h.settingsSvc.GetMaintenance(c.Request.Context())
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
}
c.JSON(http.StatusOK, m)
}
// SetMaintenance updates maintenance settings
// @Summary Update maintenance settings
// @Tags admin
// @Accept json
// @Produce json
// @Param request body service.MaintenanceSetting true "Maintenance settings"
// @Success 200 {object} map[string]string
// @Router /api/v1/admin/settings/maintenance [put]
func (h *SettingsAdminHandler) SetMaintenance(c *gin.Context) {
var req service.MaintenanceSetting
if err := c.ShouldBindJSON(&req); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
if err := h.settingsSvc.SetMaintenance(c.Request.Context(), &req); err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
}
c.JSON(http.StatusOK, gin.H{"message": "ok"})
}