import uuid
from django.db import models
from django.contrib.auth.models import User


class ContentItem(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    title = models.CharField(max_length=255)
    description = models.TextField(blank=True, null=True)
    cover_image = models.URLField(blank=True, null=True)
    price = models.FloatField(default=0)
    passkey = models.CharField(max_length=100, blank=True, null=True)
    category = models.CharField(max_length=100, blank=True, null=True)
    instructor = models.CharField(max_length=255, blank=True, null=True)
    level = models.CharField(max_length=100, blank=True, null=True)
    created_at = models.DateTimeField(auto_now_add=True)


class Question(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    content_item = models.ForeignKey(ContentItem, related_name='questions', on_delete=models.CASCADE, null=True, blank=True)
    question_text = models.TextField()
    answer_text = models.TextField(blank=True)
    price = models.FloatField(default=0)
    passkey = models.CharField(max_length=100, blank=True, null=True)
    is_published = models.BooleanField(default=False)
    is_locked = models.BooleanField(default=False)
    difficulty = models.CharField(max_length=50, blank=True, null=True)
    points = models.IntegerField(default=1)


class CourseAccess(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='course_access')
    course = models.ForeignKey(ContentItem, on_delete=models.CASCADE, related_name='student_access')
    granted_at = models.DateTimeField(auto_now_add=True)
    granted_by_admin = models.BooleanField(default=False)

    class Meta:
        constraints = [models.UniqueConstraint(fields=['user', 'course'], name='unique_user_course_access')]
