notification
This commit is contained in:
@@ -107,6 +107,8 @@ func (a *App) Initialize(cfg *config.Config) error {
|
||||
middleware.customerAuthMiddleware,
|
||||
services.userDeviceService,
|
||||
validators.userDeviceValidator,
|
||||
services.notificationService,
|
||||
validators.notificationValidator,
|
||||
)
|
||||
|
||||
return nil
|
||||
@@ -195,6 +197,9 @@ type repositories struct {
|
||||
otpRepo repository.OtpRepository
|
||||
txManager *repository.TxManager
|
||||
userDeviceRepo *repository.UserDeviceRepositoryImpl
|
||||
notificationRepo *repository.NotificationRepositoryImpl
|
||||
notificationReceiverRepo *repository.NotificationReceiverRepositoryImpl
|
||||
notificationDeliveryRepo *repository.NotificationDeliveryRepositoryImpl
|
||||
}
|
||||
|
||||
func (a *App) initRepositories() *repositories {
|
||||
@@ -242,6 +247,9 @@ func (a *App) initRepositories() *repositories {
|
||||
otpRepo: repository.NewOtpRepository(a.db),
|
||||
txManager: repository.NewTxManager(a.db),
|
||||
userDeviceRepo: repository.NewUserDeviceRepositoryImpl(a.db),
|
||||
notificationRepo: repository.NewNotificationRepository(a.db),
|
||||
notificationReceiverRepo: repository.NewNotificationReceiverRepository(a.db),
|
||||
notificationDeliveryRepo: repository.NewNotificationDeliveryRepository(a.db),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -285,6 +293,7 @@ type processors struct {
|
||||
fileClient processor.FileClient
|
||||
inventoryMovementService service.InventoryMovementService
|
||||
userDeviceProcessor *processor.UserDeviceProcessorImpl
|
||||
notificationProcessor *processor.NotificationProcessorImpl
|
||||
}
|
||||
|
||||
func (a *App) initProcessors(cfg *config.Config, repos *repositories) *processors {
|
||||
@@ -333,6 +342,7 @@ func (a *App) initProcessors(cfg *config.Config, repos *repositories) *processor
|
||||
fileClient: fileClient,
|
||||
inventoryMovementService: inventoryMovementService,
|
||||
userDeviceProcessor: processor.NewUserDeviceProcessorImpl(repos.userDeviceRepo),
|
||||
notificationProcessor: buildNotificationProcessor(cfg, repos),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -370,6 +380,7 @@ type services struct {
|
||||
customerPointsService service.CustomerPointsService
|
||||
spinGameService service.SpinGameService
|
||||
userDeviceService service.UserDeviceService
|
||||
notificationService service.NotificationService
|
||||
}
|
||||
|
||||
func (a *App) initServices(processors *processors, repos *repositories, cfg *config.Config) *services {
|
||||
@@ -406,6 +417,7 @@ func (a *App) initServices(processors *processors, repos *repositories, cfg *con
|
||||
customerPointsService := service.NewCustomerPointsService(processors.customerPointsProcessor)
|
||||
spinGameService := service.NewSpinGameService(processors.gamePlayProcessor, repos.txManager)
|
||||
userDeviceService := service.NewUserDeviceService(processors.userDeviceProcessor)
|
||||
notificationService := service.NewNotificationService(processors.notificationProcessor)
|
||||
|
||||
// Update order service with order ingredient transaction service
|
||||
orderService = service.NewOrderServiceImpl(processors.orderProcessor, repos.tableRepo, orderIngredientTransactionService, processors.orderIngredientTransactionProcessor, *repos.productRecipeRepo, repos.txManager)
|
||||
@@ -444,6 +456,7 @@ func (a *App) initServices(processors *processors, repos *repositories, cfg *con
|
||||
customerPointsService: customerPointsService,
|
||||
spinGameService: spinGameService,
|
||||
userDeviceService: userDeviceService,
|
||||
notificationService: notificationService,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -484,6 +497,7 @@ type validators struct {
|
||||
campaignValidator validator.CampaignValidator
|
||||
customerAuthValidator validator.CustomerAuthValidator
|
||||
userDeviceValidator *validator.UserDeviceValidatorImpl
|
||||
notificationValidator *validator.NotificationValidatorImpl
|
||||
}
|
||||
|
||||
func (a *App) initValidators() *validators {
|
||||
@@ -512,5 +526,29 @@ func (a *App) initValidators() *validators {
|
||||
campaignValidator: validator.NewCampaignValidator(),
|
||||
customerAuthValidator: validator.NewCustomerAuthValidator(),
|
||||
userDeviceValidator: validator.NewUserDeviceValidator(),
|
||||
notificationValidator: validator.NewNotificationValidator(),
|
||||
}
|
||||
}
|
||||
|
||||
// buildNotificationProcessor creates the notification processor with FCM integration.
|
||||
// If FCM is not configured, it returns a processor with a nil FCM client (FCM dispatch will be skipped).
|
||||
func buildNotificationProcessor(cfg *config.Config, repos *repositories) *processor.NotificationProcessorImpl {
|
||||
var fcmClient client.FCMClient
|
||||
if cfg.FCM.CredentialsFile != "" {
|
||||
var err error
|
||||
fcmClient, err = client.NewFCMClient(&cfg.FCM)
|
||||
if err != nil {
|
||||
// FCM init failure is non-fatal; notifications will still be persisted.
|
||||
fcmClient = nil
|
||||
}
|
||||
}
|
||||
|
||||
return processor.NewNotificationProcessor(
|
||||
repos.notificationRepo,
|
||||
repos.notificationReceiverRepo,
|
||||
repos.notificationDeliveryRepo,
|
||||
repos.userDeviceRepo,
|
||||
repos.userRepo,
|
||||
fcmClient,
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user