payment_forwarded_consumer.go raw
1 package service
2
3 import (
4 "context"
5
6 "gorm.io/gorm"
7
8 "github.com/getAlby/hub/db"
9 "github.com/getAlby/hub/events"
10 "github.com/getAlby/hub/lnclient"
11 "github.com/getAlby/hub/logger"
12 )
13
14 type paymentForwardedConsumer struct {
15 events.EventSubscriber
16 db *gorm.DB
17 }
18
19 // When a new app is created, subscribe to it on the relay
20 func (c *paymentForwardedConsumer) ConsumeEvent(ctx context.Context, event *events.Event, globalProperties map[string]interface{}) {
21 if event.Event != "nwc_payment_forwarded" {
22 return
23 }
24
25 properties, ok := event.Properties.(*lnclient.PaymentForwardedEventProperties)
26 if !ok {
27 logger.Logger.WithField("event", event).Error("Failed to cast event.Properties to payment forwarded event properties")
28 return
29 }
30 forward := &db.Forward{
31 OutboundAmountForwardedMsat: properties.OutboundAmountForwardedMsat,
32 TotalFeeEarnedMsat: properties.TotalFeeEarnedMsat,
33 }
34 err := c.db.Create(forward).Error
35 if err != nil {
36 logger.Logger.WithError(err).Error("failed to save forward to db")
37 }
38 }
39