Files
nebula/internal/api/handler/app.go
2026-03-10 16:26:48 +08:00

78 lines
1.5 KiB
Go

package handler
import (
"nebula/internal/api/response"
"nebula/internal/app"
"github.com/gin-gonic/gin"
)
type AppHandler struct {
service *app.AppService
}
func NewAppHandler(service *app.AppService) *AppHandler {
return &AppHandler{service: service}
}
func (h *AppHandler) List(c *gin.Context) {
apps, err := h.service.List()
if err != nil {
response.FailServer(c, err.Error())
return
}
response.Ok(c, apps)
}
func (h *AppHandler) Get(c *gin.Context) {
id := c.Param("id")
app, err := h.service.Get(id)
if err != nil {
response.FailServer(c, err.Error())
return
}
response.Ok(c, app)
}
func (h *AppHandler) Create(c *gin.Context) {
var app app.App
if err := c.ShouldBindJSON(&app); err != nil {
response.FailBadRequest(c, err.Error())
return
}
err := h.service.Create(app)
if err != nil {
response.FailServer(c, err.Error())
return
}
response.OkMsg(c, "created")
}
func (h *AppHandler) Update(c *gin.Context) {
id := c.Param("id")
var app app.App
if err := c.ShouldBindJSON(&app); err != nil {
response.FailBadRequest(c, err.Error())
return
}
err := h.service.Update(id, map[string]any{
"name": app.Name,
"description": app.Description,
})
if err != nil {
response.FailServer(c, err.Error())
return
}
response.OkMsg(c, "updated")
}
func (h *AppHandler) Delete(c *gin.Context) {
id := c.Param("id")
err := h.service.Delete(id)
if err != nil {
response.FailServer(c, err.Error())
return
}
response.OkMsg(c, "deleted")
}