gitea/models/bots/build_list.go
2022-11-25 17:48:43 +08:00

38 lines
981 B
Go

// Copyright 2022 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package bots
import (
"code.gitea.io/gitea/models/db"
user_model "code.gitea.io/gitea/models/user"
)
type BuildList []*Build
// GetUserIDs returns a slice of user's id
func (builds BuildList) GetUserIDs() []int64 {
userIDsMap := make(map[int64]struct{})
for _, build := range builds {
userIDsMap[build.TriggerUserID] = struct{}{}
}
userIDs := make([]int64, 0, len(userIDsMap))
for userID := range userIDsMap {
userIDs = append(userIDs, userID)
}
return userIDs
}
func (builds BuildList) LoadTriggerUser() error {
userIDs := builds.GetUserIDs()
users := make(map[int64]*user_model.User, len(userIDs))
if err := db.GetEngine(db.DefaultContext).In("id", userIDs).Find(&users); err != nil {
return err
}
for _, task := range builds {
task.TriggerUser = users[task.TriggerUserID]
}
return nil
}