43 lines
1.6 KiB
Go
43 lines
1.6 KiB
Go
|
|
package service
|
||
|
|
|
||
|
|
import "log/slog"
|
||
|
|
|
||
|
|
// NotificationRepository — интерфейс репозитория уведомлений для NotificationService.
|
||
|
|
type NotificationRepository interface {
|
||
|
|
// методы, которые NotificationService использует из репозитория уведомлений
|
||
|
|
}
|
||
|
|
|
||
|
|
// NotificationUserService — интерфейс сервиса пользователей для NotificationService.
|
||
|
|
type NotificationUserService interface {
|
||
|
|
// методы, которые NotificationService использует из сервиса пользователей
|
||
|
|
}
|
||
|
|
|
||
|
|
// NotificationEventSubscriber — интерфейс для подписки на события.
|
||
|
|
type NotificationEventSubscriber interface {
|
||
|
|
Subscribe(event string, handler func())
|
||
|
|
}
|
||
|
|
|
||
|
|
// NotificationService — интерфейс сервиса уведомлений.
|
||
|
|
type NotificationService interface{}
|
||
|
|
|
||
|
|
// notificationService — конкретная реализация, скрыта от внешних пакетов.
|
||
|
|
type notificationService struct {
|
||
|
|
notificationRepo NotificationRepository
|
||
|
|
userService NotificationUserService
|
||
|
|
events NotificationEventSubscriber
|
||
|
|
}
|
||
|
|
|
||
|
|
// NewNotificationService создаёт сервис уведомлений.
|
||
|
|
func NewNotificationService(
|
||
|
|
notificationRepo NotificationRepository,
|
||
|
|
userService NotificationUserService,
|
||
|
|
events NotificationEventSubscriber,
|
||
|
|
) NotificationService {
|
||
|
|
slog.Info("сервис уведомлений создан")
|
||
|
|
return ¬ificationService{
|
||
|
|
notificationRepo: notificationRepo,
|
||
|
|
userService: userService,
|
||
|
|
events: events,
|
||
|
|
}
|
||
|
|
}
|