Files
graceful-shutdown/internal/service/user.go
T
2026-04-13 08:10:14 +03:00

50 lines
1.6 KiB
Go

package service
import "log/slog"
// UserRepository — интерфейс репозитория пользователей для UserService.
type UserRepository interface {
// методы, которые UserService использует из репозитория пользователей
}
// UserAuthService — интерфейс сервиса авторизации для UserService.
type UserAuthService interface {
ValidateToken(token string) bool
}
// UserEventPublisher — интерфейс для публикации событий пользователей.
type UserEventPublisher interface {
Publish(event string)
}
// UserService — интерфейс сервиса пользователей.
type UserService interface {
GetProfile(token string) string
}
// userService — конкретная реализация, скрыта от внешних пакетов.
type userService struct {
userRepo UserRepository
authService UserAuthService
events UserEventPublisher
}
// NewUserService создаёт сервис пользователей.
func NewUserService(userRepo UserRepository, authService UserAuthService, events UserEventPublisher) UserService {
slog.Info("сервис пользователей создан")
return &userService{
userRepo: userRepo,
authService: authService,
events: events,
}
}
// GetProfile возвращает профиль текущего пользователя.
func (s *userService) GetProfile(token string) string {
if !s.authService.ValidateToken(token) {
return "unauthorized"
}
return "user profile data"
}