123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- package handlers
- import (
- "net/http"
- "git.linuxforward.com/byom/byom-core/common"
- "git.linuxforward.com/byom/byom-core/logger"
- "git.linuxforward.com/byom/byom-core/store"
- "github.com/gin-gonic/gin"
- "github.com/google/uuid"
- "github.com/sirupsen/logrus"
- )
- type WorkspaceHandler struct {
- store *store.DataStore
- logger *logrus.Entry
- }
- func NewWorkspaceHandler(db *store.DataStore) *WorkspaceHandler {
- return &WorkspaceHandler{
- store: db,
- logger: logger.NewLogger("workspace-handler"),
- }
- }
- // Workspace Management
- func (h *WorkspaceHandler) Create(c *gin.Context) {
- var req common.WorkspaceCreateRequest
- if err := c.ShouldBindJSON(&req); err != nil {
- c.JSON(http.StatusBadRequest, gin.H{"error": "Invalid request"})
- return
- }
- workspace := &common.Workspace{
- ID: uuid.New(),
- Name: req.Name,
- }
- if err := h.store.CreateWorkspace(c, workspace); err != nil {
- h.logger.WithError(err).Error("failed to create workspace")
- c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to create workspace"})
- return
- }
- c.JSON(http.StatusCreated, common.WorkspaceCreateResponse{
- ID: workspace.ID,
- Name: workspace.Name,
- })
- }
- func (h *WorkspaceHandler) Get(c *gin.Context) {
- id := c.Param("id")
- if id == "" {
- c.JSON(http.StatusBadRequest, gin.H{"error": "Workspace ID is required"})
- return
- }
- workspaceID, err := uuid.Parse(id)
- if err != nil {
- c.JSON(http.StatusBadRequest, gin.H{"error": "Invalid workspace ID format"})
- return
- }
- workspace, err := h.store.GetWorkspace(c, workspaceID.String())
- if err != nil {
- h.logger.WithError(err).Error("failed to get workspace")
- c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to get workspace"})
- return
- }
- c.JSON(http.StatusOK, workspace)
- }
|