This repository has been archived on 2026-07-17. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
codespace/internal/api/workspace_handler.go
T
2026-07-02 15:07:54 +08:00

52 lines
987 B
Go

package api
import (
"net/http"
"codespace/internal/model"
"codespace/internal/service"
"github.com/gin-gonic/gin"
)
type workspaceHandler struct {
svc *service.WorkspaceService
}
func (h *workspaceHandler) create(c *gin.Context) {
var req model.CreateWorkspaceRequest
if err := c.ShouldBindJSON(&req); err != nil {
writeBadRequest(c, "invalid json")
return
}
if req.ID == "" {
writeBadRequest(c, "id is required")
return
}
ws, err := h.svc.Create(req.ID)
if err != nil {
writeError(c, err)
return
}
c.JSON(http.StatusCreated, model.WorkspaceResponse{ID: ws.ID})
}
func (h *workspaceHandler) get(c *gin.Context) {
id := c.Param("id")
ws, err := h.svc.Get(id)
if err != nil {
writeError(c, err)
return
}
c.JSON(http.StatusOK, model.WorkspaceResponse{ID: ws.ID})
}
func (h *workspaceHandler) delete(c *gin.Context) {
id := c.Param("id")
if err := h.svc.Delete(id); err != nil {
writeError(c, err)
return
}
c.Status(http.StatusNoContent)
}