|
|
- // Copyright 2018 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 models
-
- // CommentList defines a list of comments
- type CommentList []*Comment
-
- func (comments CommentList) getPosterIDs() []int64 {
- commentIDs := make(map[int64]struct{}, len(comments))
- for _, comment := range comments {
- if _, ok := commentIDs[comment.PosterID]; !ok {
- commentIDs[comment.PosterID] = struct{}{}
- }
- }
- return keysInt64(commentIDs)
- }
-
- // LoadPosters loads posters from database
- func (comments CommentList) LoadPosters() error {
- return comments.loadPosters(x)
- }
-
- func (comments CommentList) loadPosters(e Engine) error {
- if len(comments) == 0 {
- return nil
- }
-
- posterIDs := comments.getPosterIDs()
- posterMaps := make(map[int64]*User, len(posterIDs))
- var left = len(posterIDs)
- for left > 0 {
- var limit = defaultMaxInSize
- if left < limit {
- limit = left
- }
- err := e.
- In("id", posterIDs[:limit]).
- Find(&posterMaps)
- if err != nil {
- return err
- }
- left = left - limit
- posterIDs = posterIDs[limit:]
- }
-
- for _, comment := range comments {
- if comment.PosterID <= 0 {
- continue
- }
- var ok bool
- if comment.Poster, ok = posterMaps[comment.PosterID]; !ok {
- comment.Poster = NewGhostUser()
- }
- }
- return nil
- }
|