fix(cloudflare): clean up pointing member when zone domain is deleted

This commit is contained in:
ryan
2026-08-29 18:32:02 +08:00
parent 81739f9cb4
commit bbd7f72c2d
9 changed files with 104 additions and 5 deletions
+15
View File
@@ -10,8 +10,10 @@ import (
"strings"
"time"
cf "github.com/Rain-kl/Wavelet/internal/apps/openflare/cloudflare"
"github.com/Rain-kl/Wavelet/internal/model"
"github.com/Rain-kl/Wavelet/internal/repository"
"github.com/Rain-kl/Wavelet/pkg/logger"
"golang.org/x/net/publicsuffix"
"gorm.io/gorm"
)
@@ -220,6 +222,19 @@ func DeleteDomain(ctx context.Context, zoneID, id uint) error {
if item.ProxyRouteID != nil {
return errors.New(errDomainBoundToRoute)
}
member, cfErr := repository.GetCFPointingMemberByZoneDomainID(ctx, item.ID)
if cfErr != nil && !errors.Is(cfErr, gorm.ErrRecordNotFound) {
return cfErr
}
if member != nil {
if delErr := cf.DeleteManagedRecord(ctx, member.ID); delErr != nil {
logger.WarnF(ctx, "[Zone] delete managed Cloudflare record failed for domain %s (member_id=%d): %v", item.Domain, member.ID, delErr)
}
if delMemberErr := repository.DeleteCFPointingMember(ctx, member); delMemberErr != nil {
logger.ErrorF(ctx, "[Zone] delete Cloudflare pointing member failed: member_id=%d error=%v", member.ID, delMemberErr)
return delMemberErr
}
}
return repository.DeleteZoneDomain(ctx, item)
}