Compare commits

..

2 Commits

Author SHA1 Message Date
Mazyar 534213f10e Enhance notification search functionality with user ID filtering
continuous-integration/drone/push Build is passing
- Added a new `UserID` field to the `SearchForm` to allow filtering notifications by user ID.
- Implemented the `ResolvedRecipients` method to return user IDs based on the `user_id` or `recipient` query parameters, improving the flexibility of notification searches.
- Updated the `GetNotifications` method in the service layer to utilize the new recipient resolution logic, ensuring accurate retrieval of notifications based on user ID.

This update enhances the notification management capabilities, providing more granular control over notification searches.
2026-06-28 11:04:24 +03:30
Mazyar 6d5694977b Add .gitattributes file for text file handling
- Introduced a new `.gitattributes` file to ensure consistent handling of text files across different platforms by setting the `text=auto` attribute.
- This addition helps maintain cross-platform compatibility and prevents potential issues with line endings in text files.

This update lays the groundwork for better version control practices in the project, enhancing collaboration among developers working on different operating systems.
2026-06-28 00:36:10 +03:30
4 changed files with 13 additions and 2 deletions
+1
View File
@@ -0,0 +1 @@
* text=auto
+9
View File
@@ -30,6 +30,7 @@ type SearchForm struct {
EventType string `query:"event_type" valid:"optional"`
Type string `query:"type" valid:"optional"`
Recipient []string `query:"recipient" json:"recipient" valid:"optional"`
UserID string `query:"user_id" valid:"optional"`
Seen *bool `query:"seen" valid:"optional"`
Priority string `query:"priority" valid:"optional"`
}
@@ -45,6 +46,14 @@ func (f *SearchForm) ResolvedSearch() string {
return ""
}
// ResolvedRecipients returns the user IDs to filter by from user_id or recipient query params.
func (f *SearchForm) ResolvedRecipients() []string {
if id := strings.TrimSpace(f.UserID); id != "" {
return []string{id}
}
return f.Recipient
}
type NotificationListResponse struct {
Notifications []*NotificationResponse `json:"notifications"`
Meta *response.Meta `json:"meta"`
+1
View File
@@ -65,6 +65,7 @@ func (h *NotificationHandler) Send(c echo.Context) error {
// @Param event_type query string false "Event type filter"
// @Param type query string false "Type filter"
// @Param recipient query string false "Recipient filter"
// @Param user_id query string false "User ID filter"
// @Param seen query bool false "Seen filter"
// @Param priority query string false "Priority filter"
// @Param limit query int false "Limit results"
+2 -2
View File
@@ -197,14 +197,14 @@ func (s *notificationService) GetNotifications(ctx context.Context, req *SearchF
"method": req.Method,
"event_type": req.EventType,
"type": req.Type,
"recipient": req.Recipient,
"recipient": req.ResolvedRecipients(),
"seen": req.Seen,
"priority": req.Priority,
"limit": pagination.Limit,
"offset": pagination.Offset,
})
page, err := s.repository.GetByUserID(ctx, req.Recipient, search, req.Status, req.Seen, req.Priority, req.EventType, req.Type, pagination)
page, err := s.repository.GetByUserID(ctx, req.ResolvedRecipients(), search, req.Status, req.Seen, req.Priority, req.EventType, req.Type, pagination)
if err != nil {
s.logger.Error("Failed to get notifications", map[string]interface{}{
"error": err.Error(),