mirror of
https://github.com/aykhans/slash-e.git
synced 2025-04-16 04:13:12 +00:00
feat: add member list to workspace
This commit is contained in:
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…
x
Reference in New Issue
Block a user