41 lines
782 B
Go
41 lines
782 B
Go
package useCases
|
|
|
|
import (
|
|
"RenewCMS/internal/domain/user"
|
|
"errors"
|
|
)
|
|
|
|
type uploaderNames struct {
|
|
userRepository user.Repository
|
|
names map[uint32]string
|
|
}
|
|
|
|
func newUploaderNames(userRepository user.Repository) *uploaderNames {
|
|
return &uploaderNames{userRepository: userRepository, names: map[uint32]string{}}
|
|
}
|
|
|
|
func (u *uploaderNames) nameOf(userId uint32) (string, error) {
|
|
if userId == 0 {
|
|
return "", nil
|
|
}
|
|
if name, ok := u.names[userId]; ok {
|
|
return name, nil
|
|
}
|
|
|
|
uploader, err := u.userRepository.Get(userId)
|
|
if errors.Is(err, user.ErrUserNotFound) {
|
|
u.names[userId] = ""
|
|
return "", nil
|
|
}
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
name := uploader.DisplayName
|
|
if name == "" {
|
|
name = uploader.Username
|
|
}
|
|
u.names[userId] = name
|
|
return name, nil
|
|
}
|