workspace.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package handlers
  2. import (
  3. "net/http"
  4. "git.linuxforward.com/byom/byom-core/common"
  5. "git.linuxforward.com/byom/byom-core/store"
  6. "github.com/gin-gonic/gin"
  7. "github.com/google/uuid"
  8. "github.com/sirupsen/logrus"
  9. )
  10. type WorkspaceHandler struct {
  11. store *store.DataStore
  12. logger *logrus.Entry
  13. }
  14. func NewWorkspaceHandler(db *store.DataStore) *WorkspaceHandler {
  15. logger := logrus.WithField("core", "workspace-handler")
  16. return &WorkspaceHandler{
  17. store: db,
  18. logger: logger,
  19. }
  20. }
  21. type CreateWorkspaceRequest struct {
  22. Name string `json:"name" binding:"required"`
  23. }
  24. type WorkspaceResponse struct {
  25. ID string `json:"id"`
  26. Name string `json:"name"`
  27. }
  28. func (h *WorkspaceHandler) CreateWorkspace(c *gin.Context) {
  29. var req CreateWorkspaceRequest
  30. if err := c.ShouldBindJSON(&req); err != nil {
  31. c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
  32. return
  33. }
  34. workspace := &common.Workspace{
  35. ID: uuid.New(),
  36. Name: req.Name,
  37. }
  38. if err := h.store.CreateWorkspace(c, workspace); err != nil {
  39. h.logger.WithError(err).Error("failed to create user")
  40. c.JSON(http.StatusInternalServerError, gin.H{"error": "Internal server error"})
  41. return
  42. }
  43. c.JSON(http.StatusCreated, workspace)
  44. }
  45. func (h *WorkspaceHandler) GetWorkspace(c *gin.Context) {
  46. // Implementation
  47. }