Files
wehub-resource-sync 75f3dd141c
CodeQL / Analyze (go) (push) Has been cancelled
CodeQL / Analyze (actions) (push) Has been cancelled
CodeQL / Analyze (javascript-typescript) (push) Has been cancelled
CI and Release / lint-frontend (push) Has been cancelled
CI and Release / dockerfile-scan (push) Has been cancelled
CI and Release / test-frontend (push) Has been cancelled
CI and Release / lint-verification-agent (push) Has been cancelled
CI and Release / test-verification-agent (push) Has been cancelled
CI and Release / e2e-verification-agent (push) Has been cancelled
CI and Release / test-backend (push) Has been cancelled
CI and Release / build-dev-image (push) Has been cancelled
CI and Release / push-dev-image (push) Has been cancelled
CI and Release / build-image (push) Has been cancelled
CI and Release / build-verification-image (push) Has been cancelled
CI and Release / determine-version (push) Has been cancelled
CI and Release / push-image (push) Has been cancelled
CI and Release / push-verification-image (12) (push) Has been cancelled
CI and Release / lint-backend (push) Has been cancelled
CI and Release / push-verification-image (17) (push) Has been cancelled
CI and Release / push-verification-image (18) (push) Has been cancelled
CI and Release / release (push) Has been cancelled
CI and Release / publish-helm-chart (push) Has been cancelled
CI and Release / push-verification-image (13) (push) Has been cancelled
CI and Release / push-verification-image (14) (push) Has been cancelled
CI and Release / push-verification-image (15) (push) Has been cancelled
CI and Release / push-verification-image (16) (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:11:07 +08:00

66 lines
1.7 KiB
Go

package workspaces_dto
import (
"time"
"github.com/google/uuid"
users_enums "databasus-backend/internal/features/users/enums"
)
type AddMemberStatus string
const (
AddStatusInvited AddMemberStatus = "INVITED"
AddStatusAdded AddMemberStatus = "ADDED"
)
// Workspace DTOs
type CreateWorkspaceRequestDTO struct {
Name string `json:"name" binding:"required,min=1,max=255"`
}
type WorkspaceResponseDTO struct {
ID uuid.UUID `json:"id"`
Name string `json:"name"`
CreatedAt time.Time `json:"createdAt"`
// User's role in this workspace (populated when fetching for specific user)
UserRole *users_enums.WorkspaceRole `json:"userRole,omitempty"`
}
type ListWorkspacesResponseDTO struct {
Workspaces []WorkspaceResponseDTO `json:"workspaces"`
}
// Membership DTOs
type AddMemberRequestDTO struct {
Email string `json:"email" binding:"required,email"`
Role users_enums.WorkspaceRole `json:"role" binding:"required"`
}
type AddMemberResponseDTO struct {
Status AddMemberStatus `json:"status"`
}
type ChangeMemberRoleRequestDTO struct {
Role users_enums.WorkspaceRole `json:"role" binding:"required"`
}
type TransferOwnershipRequestDTO struct {
NewOwnerEmail string `json:"newOwnerEmail" binding:"required"`
}
type WorkspaceMemberResponseDTO struct {
ID uuid.UUID `json:"id"`
UserID uuid.UUID `json:"userId"`
Email string `json:"email"` // Populated from user join
Name string `json:"name"` // Populated from user join
Role users_enums.WorkspaceRole `json:"role"`
CreatedAt time.Time `json:"createdAt"`
}
type GetMembersResponseDTO struct {
Members []WorkspaceMemberResponseDTO `json:"members"`
}