Bläddra i källkod

Dont fail when referral doesnt exist

Mauricio Araujo 2 år sedan
förälder
incheckning
cb6f58dccf
2 ändrade filer med 12 tillägg och 1 borttagningar
  1. 4 0
      api/server/handlers/billing/create.go
  2. 8 1
      internal/repository/gorm/referrals.go

+ 4 - 0
api/server/handlers/billing/create.go

@@ -136,6 +136,10 @@ func (c *CreateBillingHandler) grantRewardIfReferral(ctx context.Context, referr
 		return telemetry.Error(ctx, span, err, "failed to find referral by referred id")
 	}
 
+	if referral == nil {
+		return nil
+	}
+
 	referrerProject, err := c.Repo().Project().ReadProject(referral.ProjectID)
 	if err != nil {
 		return telemetry.Error(ctx, span, err, "failed to find referrer project")

+ 8 - 1
internal/repository/gorm/referrals.go

@@ -1,6 +1,8 @@
 package gorm
 
 import (
+	"errors"
+
 	"github.com/porter-dev/porter/internal/models"
 	"github.com/porter-dev/porter/internal/repository"
 	"gorm.io/gorm"
@@ -52,7 +54,12 @@ func (repo *ReferralRepository) CountReferralsByProjectID(projectID uint, status
 // GetReferralByReferredID returns a referral by the referred user's ID
 func (repo *ReferralRepository) GetReferralByReferredID(referredID uint) (*models.Referral, error) {
 	referral := &models.Referral{}
-	if err := repo.db.Where("referred_user_id = ?", referredID).First(&referral).Error; err != nil {
+	err := repo.db.Where("referred_user_id = ?", referredID).First(&referral).Error
+	if errors.Is(err, gorm.ErrRecordNotFound) {
+		return nil, nil
+	}
+
+	if err != nil {
 		return &models.Referral{}, err
 	}
 	return referral, nil