70 lines
2.1 KiB
Go
70 lines
2.1 KiB
Go
package controller
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/kandev/kandev/internal/task/dto"
|
|
"github.com/kandev/kandev/internal/task/service"
|
|
)
|
|
|
|
type WorkspaceController struct {
|
|
service *service.Service
|
|
}
|
|
|
|
func NewWorkspaceController(svc *service.Service) *WorkspaceController {
|
|
return &WorkspaceController{service: svc}
|
|
}
|
|
|
|
func (c *WorkspaceController) ListWorkspaces(ctx context.Context, _ dto.ListWorkspacesRequest) (dto.ListWorkspacesResponse, error) {
|
|
workspaces, err := c.service.ListWorkspaces(ctx)
|
|
if err != nil {
|
|
return dto.ListWorkspacesResponse{}, err
|
|
}
|
|
resp := dto.ListWorkspacesResponse{
|
|
Workspaces: make([]dto.WorkspaceDTO, 0, len(workspaces)),
|
|
Total: len(workspaces),
|
|
}
|
|
for _, workspace := range workspaces {
|
|
resp.Workspaces = append(resp.Workspaces, dto.FromWorkspace(workspace))
|
|
}
|
|
return resp, nil
|
|
}
|
|
|
|
func (c *WorkspaceController) GetWorkspace(ctx context.Context, req dto.GetWorkspaceRequest) (dto.WorkspaceDTO, error) {
|
|
workspace, err := c.service.GetWorkspace(ctx, req.ID)
|
|
if err != nil {
|
|
return dto.WorkspaceDTO{}, err
|
|
}
|
|
return dto.FromWorkspace(workspace), nil
|
|
}
|
|
|
|
func (c *WorkspaceController) CreateWorkspace(ctx context.Context, req dto.CreateWorkspaceRequest) (dto.WorkspaceDTO, error) {
|
|
workspace, err := c.service.CreateWorkspace(ctx, &service.CreateWorkspaceRequest{
|
|
Name: req.Name,
|
|
Description: req.Description,
|
|
OwnerID: req.OwnerID,
|
|
})
|
|
if err != nil {
|
|
return dto.WorkspaceDTO{}, err
|
|
}
|
|
return dto.FromWorkspace(workspace), nil
|
|
}
|
|
|
|
func (c *WorkspaceController) UpdateWorkspace(ctx context.Context, req dto.UpdateWorkspaceRequest) (dto.WorkspaceDTO, error) {
|
|
workspace, err := c.service.UpdateWorkspace(ctx, req.ID, &service.UpdateWorkspaceRequest{
|
|
Name: req.Name,
|
|
Description: req.Description,
|
|
})
|
|
if err != nil {
|
|
return dto.WorkspaceDTO{}, err
|
|
}
|
|
return dto.FromWorkspace(workspace), nil
|
|
}
|
|
|
|
func (c *WorkspaceController) DeleteWorkspace(ctx context.Context, req dto.DeleteWorkspaceRequest) (dto.SuccessResponse, error) {
|
|
if err := c.service.DeleteWorkspace(ctx, req.ID); err != nil {
|
|
return dto.SuccessResponse{}, err
|
|
}
|
|
return dto.SuccessResponse{Success: true}, nil
|
|
}
|