Files
tm_back/pkg/notification/interfaces.go
T
n.nakhostin 5906904caf Enhance Notification System with New API Endpoints and Response Structures
- Added new endpoints for marking notifications as seen and retrieving detailed notification information for both admin and user contexts, improving the flexibility of the notification system.
- Implemented the MarkSeen and ViewNotification methods in the NotificationHandler, ensuring proper handling of notification visibility and details retrieval.
- Updated the NotificationService interface to include methods for getting notification details and marking notifications as seen, enhancing service capabilities.
- Enhanced the notification response structures to include additional fields such as Image, Seen, and ScheduledAt, providing richer data in API responses.
- Updated API documentation with Swagger comments for the new endpoints and response formats, ensuring clarity for API consumers.
2025-09-21 11:26:54 +03:30

81 lines
2.5 KiB
Go

package notification
import (
"context"
)
// NotificationService defines the interface for notification operations
type NotificationService interface {
// SendNotification sends a notification using the configured client
SendNotification(ctx context.Context, req *NotificationRequest) (*NotificationResponse, error)
// SendEmail sends an email notification
SendEmail(ctx context.Context, model Model) (*NotificationResponse, error)
// SendSMS sends an SMS notification
SendSMS(ctx context.Context, model Model) (*NotificationResponse, error)
// SendPush sends a push notification
SendPush(ctx context.Context, model Model) (*NotificationResponse, error)
// SendOTP sends an OTP notification
SendOTP(ctx context.Context, model Model) (*NotificationResponse, error)
// GetNotifications retrieves a list of notifications
GetNotifications(ctx context.Context, req *GetNotificationsRequest) (*NotificationListResponse, error)
// GetNotification retrieves a single notification by ID
GetNotification(ctx context.Context, notificationID string) (*DetailedNotificationResponse, error)
// MarkSeen marks a notification as seen
MarkSeen(ctx context.Context, notificationID string) (*MarkSeenResponse, error)
// Health checks if the notification service is available
Health(ctx context.Context) error
// NewBuilder creates a new notification builder
NewBuilder() Builder
}
// Builder provides a fluent interface for building notification requests
type Builder interface {
// SetEventType sets the event type
SetEventType(eventType EventType) Builder
// SetMessage sets the notification message
SetMessage(message string) Builder
// SetUserID sets the user ID
SetUserID(userID string) Builder
// SetEmail sets the email address
SetEmail(email string) Builder
// SetSMS sets the SMS phone number
SetSMS(phoneNumber string) Builder
// SetPush sets the push device token
SetPush(deviceToken string) Builder
// SetOTP sets the OTP phone number
SetOTP(phoneNumber string) Builder
// SetTitle sets the notification title
SetTitle(title string) Builder
// SetType sets the notification type
SetType(notificationType string) Builder
// SetPriority sets the notification priority
SetPriority(priority string) Builder
// SetScheduledAt sets the scheduled delivery time (0 for immediate)
SetScheduledAt(scheduledAt int64) Builder
// Build creates the notification request
Build() (*NotificationRequest, error)
// Send builds and sends the notification
Send(ctx context.Context) (*NotificationResponse, error)
}