package handlers import ( "net/http" "git.linuxforward.com/byom/byom-core/common" "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 { logger := logrus.WithField("core", "workspace-handler") return &WorkspaceHandler{ store: db, logger: logger, } } type CreateWorkspaceRequest struct { Name string `json:"name" binding:"required"` } type WorkspaceResponse struct { ID string `json:"id"` Name string `json:"name"` } func (h *WorkspaceHandler) CreateWorkspace(c *gin.Context) { var req CreateWorkspaceRequest if err := c.ShouldBindJSON(&req); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) 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 user") c.JSON(http.StatusInternalServerError, gin.H{"error": "Internal server error"}) return } c.JSON(http.StatusCreated, workspace) } func (h *WorkspaceHandler) GetWorkspace(c *gin.Context) { // Implementation }