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