Skip to content

Commit 4452b0e

Browse files
committed
Fix webhook selection code
1 parent a89c323 commit 4452b0e

File tree

4 files changed

+9
-6
lines changed

4 files changed

+9
-6
lines changed

api/pkg/listeners/webhook_listener.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ func (listener *WebhookListener) OnMessagePhoneReceived(ctx context.Context, eve
4646
return listener.tracer.WrapErrorSpan(span, stacktrace.Propagate(err, msg))
4747
}
4848

49-
if err := listener.service.Send(ctx, payload.UserID, event); err != nil {
49+
if err := listener.service.Send(ctx, payload.UserID, event, payload.Owner); err != nil {
5050
msg := fmt.Sprintf("cannot process [%s] event with ID [%s]", event.Type(), event.ID())
5151
return listener.tracer.WrapErrorSpan(span, stacktrace.Propagate(err, msg))
5252
}

api/pkg/repositories/gorm_webhook_repository.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,12 +64,15 @@ func (repository *gormWebhookRepository) Index(ctx context.Context, userID entit
6464
return webhooks, nil
6565
}
6666

67-
func (repository *gormWebhookRepository) LoadByEvent(ctx context.Context, userID entities.UserID, event string) ([]*entities.Webhook, error) {
67+
func (repository *gormWebhookRepository) LoadByEvent(ctx context.Context, userID entities.UserID, event string, phoneNumber string) ([]*entities.Webhook, error) {
6868
ctx, span := repository.tracer.Start(ctx)
6969
defer span.End()
7070

7171
webhooks := make([]*entities.Webhook, 0)
72-
err := repository.db.Raw("SELECT * FROM webhooks WHERE user_id = ? AND CAST(? as TEXT) = ANY(events)", userID, event).Scan(&webhooks).Error
72+
err := repository.db.
73+
Raw("SELECT * FROM webhooks WHERE user_id = ? AND CAST(? as TEXT) = ANY(events) AND CAST(? as TEXT) = ANY(phone_numbers)", userID, event, phoneNumber).
74+
Scan(&webhooks).
75+
Error
7376
if err != nil {
7477
msg := fmt.Sprintf("cannot load webhooks for user with ID [%s] and event [%s]", userID, event)
7578
return nil, repository.tracer.WrapErrorSpan(span, stacktrace.Propagate(err, msg))

api/pkg/repositories/webhook_repository.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ type WebhookRepository interface {
1717
Index(ctx context.Context, userID entities.UserID, params IndexParams) ([]*entities.Webhook, error)
1818

1919
// LoadByEvent loads webhooks for a user and event.
20-
LoadByEvent(ctx context.Context, userID entities.UserID, event string) ([]*entities.Webhook, error)
20+
LoadByEvent(ctx context.Context, userID entities.UserID, event string, phoneNumber string) ([]*entities.Webhook, error)
2121

2222
// Load loads a webhook by ID.
2323
Load(ctx context.Context, userID entities.UserID, webhookID uuid.UUID) (*entities.Webhook, error)

api/pkg/services/webhook_service.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -157,11 +157,11 @@ func (service *WebhookService) Update(ctx context.Context, params *WebhookUpdate
157157
}
158158

159159
// Send an event to a subscribed webhook
160-
func (service *WebhookService) Send(ctx context.Context, userID entities.UserID, event cloudevents.Event) error {
160+
func (service *WebhookService) Send(ctx context.Context, userID entities.UserID, event cloudevents.Event, phoneNumber string) error {
161161
ctx, span, ctxLogger := service.tracer.StartWithLogger(ctx, service.logger)
162162
defer span.End()
163163

164-
webhooks, err := service.repository.LoadByEvent(ctx, userID, event.Type())
164+
webhooks, err := service.repository.LoadByEvent(ctx, userID, event.Type(), phoneNumber)
165165
if err != nil {
166166
msg := fmt.Sprintf("cannot load webhooks for userID [%s] and event [%s]", userID, event.Type())
167167
return service.tracer.WrapErrorSpan(span, stacktrace.PropagateWithCode(err, stacktrace.GetCode(err), msg))

0 commit comments

Comments
 (0)