from django.db import models
from django.conf import settings
from posts.models import Post
from categories.models import Category

User = settings.AUTH_USER_MODEL

class SavedPost(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='saved_posts')
    post = models.ForeignKey(Post, on_delete=models.CASCADE, related_name='saved_by_users')
    created_at = models.DateTimeField(auto_now_add=True)

    class Meta:
        unique_together = ('user', 'post')
        ordering = ['-created_at']

    def __str__(self):
        return f"{self.user} saved {self.post}"

class SavedUser(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='saved_profiles')
    saved_user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='profile_saved_by')
    created_at = models.DateTimeField(auto_now_add=True)

    class Meta:
        unique_together = ('user', 'saved_user')
        ordering = ['-created_at']

    def __str__(self):
        return f"{self.user} saved profile of {self.saved_user}"

class SavedCategory(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='saved_categories')
    category = models.ForeignKey(Category, on_delete=models.CASCADE, related_name='saved_by_users')
    created_at = models.DateTimeField(auto_now_add=True)

    class Meta:
        unique_together = ('user', 'category')
        ordering = ['-created_at']

    def __str__(self):
        return f"{self.user} saved category {self.category}"
