feat: add member list to workspace

prod
steven 2 years ago
parent 887e757c39
commit 922f8e6f95

@ -12,6 +12,9 @@ type Workspace struct {
// Domain specific fields
Name string `json:"name"`
Description string `json:"description"`
// Related fields
WorkspaceUserList []*WorkspaceUser `json:"workspaceUserList"`
}
type WorkspaceCreate struct {

@ -23,10 +23,13 @@ func (e Role) String() string {
type WorkspaceUser struct {
WorkspaceID int `json:"workspaceId"`
UserID int `json:"userId"`
User *User `json:"user"`
Role Role `json:"role"`
CreatedTs int64 `json:"createdTs"`
UpdatedTs int64 `json:"updatedTs"`
// Related fields
Email string `json:"email"`
Name string `json:"name"`
}
type WorkspaceUserUpsert struct {

@ -40,6 +40,10 @@ func (s *Server) registerWorkspaceRoutes(g *echo.Group) {
return echo.NewHTTPError(http.StatusInternalServerError, "Failed to create workspace user").SetInternal(err)
}
if err := s.Store.ComposeWorkspaceUserListForWorkspace(ctx, workspace); err != nil {
return echo.NewHTTPError(http.StatusInternalServerError, "Failed to compose workspace user list").SetInternal(err)
}
c.Response().Header().Set(echo.HeaderContentType, echo.MIMEApplicationJSONCharsetUTF8)
if err := json.NewEncoder(c.Response().Writer).Encode(composeResponse(workspace)); err != nil {
return echo.NewHTTPError(http.StatusInternalServerError, "Failed to encode workspace response").SetInternal(err)
@ -62,6 +66,12 @@ func (s *Server) registerWorkspaceRoutes(g *echo.Group) {
return echo.NewHTTPError(http.StatusInternalServerError, "Failed to fetch workspace list").SetInternal(err)
}
for _, workspace := range workspaceList {
if err := s.Store.ComposeWorkspaceUserListForWorkspace(ctx, workspace); err != nil {
return echo.NewHTTPError(http.StatusInternalServerError, "Failed to compose workspace user list").SetInternal(err)
}
}
c.Response().Header().Set(echo.HeaderContentType, echo.MIMEApplicationJSONCharsetUTF8)
if err := json.NewEncoder(c.Response().Writer).Encode(composeResponse(workspaceList)); err != nil {
return echo.NewHTTPError(http.StatusInternalServerError, "Failed to encode workspace list response").SetInternal(err)
@ -83,6 +93,10 @@ func (s *Server) registerWorkspaceRoutes(g *echo.Group) {
return echo.NewHTTPError(http.StatusInternalServerError, "Failed to find workspace").SetInternal(err)
}
if err := s.Store.ComposeWorkspaceUserListForWorkspace(ctx, workspace); err != nil {
return echo.NewHTTPError(http.StatusInternalServerError, "Failed to compose workspace user list").SetInternal(err)
}
c.Response().Header().Set(echo.HeaderContentType, echo.MIMEApplicationJSONCharsetUTF8)
if err := json.NewEncoder(c.Response().Writer).Encode(composeResponse(workspace)); err != nil {
return echo.NewHTTPError(http.StatusInternalServerError, "Failed to encode workspace response").SetInternal(err)
@ -188,6 +202,10 @@ func (s *Server) registerWorkspaceRoutes(g *echo.Group) {
return echo.NewHTTPError(http.StatusInternalServerError, "Failed to patch workspace").SetInternal(err)
}
if err := s.Store.ComposeWorkspaceUserListForWorkspace(ctx, workspace); err != nil {
return echo.NewHTTPError(http.StatusInternalServerError, "Failed to compose workspace user list").SetInternal(err)
}
c.Response().Header().Set(echo.HeaderContentType, echo.MIMEApplicationJSONCharsetUTF8)
if err := json.NewEncoder(c.Response().Writer).Encode(composeResponse(workspace)); err != nil {
return echo.NewHTTPError(http.StatusInternalServerError, "Failed to encode workspace response").SetInternal(err)

@ -34,8 +34,9 @@ func (raw *workspaceRaw) toWorkspace() *api.Workspace {
UpdatedTs: raw.UpdatedTs,
RowStatus: raw.RowStatus,
Name: raw.Name,
Description: raw.Description,
Name: raw.Name,
Description: raw.Description,
WorkspaceUserList: []*api.WorkspaceUser{},
}
}

@ -37,9 +37,26 @@ func (s *Store) ComposeWorkspaceUser(ctx context.Context, workspaceUser *api.Wor
return err
}
user.OpenID = ""
user.UserSettingList = nil
workspaceUser.User = user
workspaceUser.Email = user.Email
workspaceUser.Name = user.Name
return nil
}
func (s *Store) ComposeWorkspaceUserListForWorkspace(ctx context.Context, workspace *api.Workspace) error {
workspaceUserList, err := s.FindWordspaceUserList(ctx, &api.WorkspaceUserFind{
WorkspaceID: &workspace.ID,
})
if err != nil {
return err
}
for _, workspaceUser := range workspaceUserList {
if err := s.ComposeWorkspaceUser(ctx, workspaceUser); err != nil {
return err
}
}
workspace.WorkspaceUserList = workspaceUserList
return nil
}

Loading…
Cancel
Save