import logging

from django.db.models.signals import pre_delete
from django.dispatch import receiver

from blogs.models import BlogArticle
from blogs.services.shopify_blog_service import ShopifyBlogService

logger = logging.getLogger(__name__)


@receiver(pre_delete, sender=BlogArticle)
def delete_shopify_article_on_blog_delete(sender, instance, **kwargs):
    """Remove the linked Shopify post when a BlogArticle is deleted."""
    if not (instance.shopify_article_id or "").strip():
        return
    try:
        ShopifyBlogService.delete_article(instance)
    except Exception as exc:
        logger.exception(
            "Shopify delete failed for django article %s (shopify %s): %s",
            instance.pk,
            instance.shopify_article_id,
            exc,
        )
        raise
