Feat: support to query the alias of the project member

Signed-off-by: barnettZQG <barnett.zqg@gmail.com>
This commit is contained in:
barnettZQG
2022-07-25 19:09:03 +08:00
parent 6a9064b823
commit 1cc82e324a
3 changed files with 37 additions and 5 deletions
+31 -5
View File
@@ -383,9 +383,28 @@ func (p *projectServiceImpl) ListProjectUser(ctx context.Context, projectName st
if err != nil {
return nil, err
}
var usernames []string
for _, entity := range entities {
usernames = append(usernames, entity.(*model.ProjectUser).Username)
}
var userMap = make(map[string]*model.User, len(usernames))
if len(usernames) > 0 {
users, _ := p.Store.List(ctx, &model.User{}, &datastore.ListOptions{
FilterOptions: datastore.FilterOptions{
In: []datastore.InQueryOption{
{Key: "name", Values: usernames},
},
},
})
for i := range users {
user := users[i].(*model.User)
userMap[user.Name] = user
}
}
var res apisv1.ListProjectUsersResponse
for _, entity := range entities {
res.Users = append(res.Users, ConvertProjectUserModel2Base(entity.(*model.ProjectUser)))
projectUser := entity.(*model.ProjectUser)
res.Users = append(res.Users, ConvertProjectUserModel2Base(projectUser, userMap[projectUser.Username]))
}
count, err := p.Store.Count(ctx, &projectUser, nil)
if err != nil {
@@ -400,7 +419,7 @@ func (p *projectServiceImpl) AddProjectUser(ctx context.Context, projectName str
if err != nil {
return nil, err
}
_, err = p.UserService.GetUser(ctx, req.UserName)
user, err := p.UserService.GetUser(ctx, req.UserName)
if err != nil {
return nil, err
}
@@ -428,7 +447,7 @@ func (p *projectServiceImpl) AddProjectUser(ctx context.Context, projectName str
}
return nil, err
}
return ConvertProjectUserModel2Base(&projectUser), nil
return ConvertProjectUserModel2Base(&projectUser, user), nil
}
func (p *projectServiceImpl) DeleteProjectUser(ctx context.Context, projectName string, userName string) error {
@@ -454,6 +473,10 @@ func (p *projectServiceImpl) UpdateProjectUser(ctx context.Context, projectName
if err != nil {
return nil, err
}
user, err := p.UserService.GetUser(ctx, userName)
if err != nil {
return nil, err
}
// check user roles
for _, role := range req.UserRoles {
var projectUser = model.Role{
@@ -481,7 +504,7 @@ func (p *projectServiceImpl) UpdateProjectUser(ctx context.Context, projectName
if err := p.Store.Put(ctx, &projectUser); err != nil {
return nil, err
}
return ConvertProjectUserModel2Base(&projectUser), nil
return ConvertProjectUserModel2Base(&projectUser, user), nil
}
func (p *projectServiceImpl) GetConfigs(ctx context.Context, projectName, configType string) ([]*apisv1.Config, error) {
@@ -592,13 +615,16 @@ func ConvertProjectModel2Base(project *model.Project, owner *model.User) *apisv1
}
// ConvertProjectUserModel2Base convert project user model to base struct
func ConvertProjectUserModel2Base(user *model.ProjectUser) *apisv1.ProjectUserBase {
func ConvertProjectUserModel2Base(user *model.ProjectUser, userModel *model.User) *apisv1.ProjectUserBase {
base := &apisv1.ProjectUserBase{
UserName: user.Username,
UserRoles: user.UserRoles,
CreateTime: user.CreateTime,
UpdateTime: user.UpdateTime,
}
if userModel != nil {
base.UserAlias = userModel.Alias
}
return base
}
@@ -227,6 +227,11 @@ var _ = Describe("Test project service functions", func() {
UserRoles: []string{"project-admin"},
})
Expect(err).Should(BeNil())
users, err := projectService.ListProjectUser(context.TODO(), "test-project", 0, 0)
Expect(err).Should(BeNil())
Expect(len(users.Users)).Should(Equal(1))
Expect(users.Users[0].UserAlias).Should(Equal("Administrator"))
})
It("Test Update project user function", func() {
@@ -1275,6 +1275,7 @@ type DetailUserResponse struct {
// ProjectUserBase project user base
type ProjectUserBase struct {
UserName string `json:"name"`
UserAlias string `json:"alias"`
UserRoles []string `json:"userRoles"`
CreateTime time.Time `json:"createTime"`
UpdateTime time.Time `json:"updateTime"`