from mongoengine import Document, IntField, StringField, DateTimeField, ReferenceField, DENY
from datetime import datetime
from models.course import Course
from models.exam import Exam
from models.sub_exam import SubExam

class Ebook(Document):
    exam_id = ReferenceField(Exam, required=True)
    sub_exam_id = ReferenceField(SubExam, required=True)

    # no matching logic; keep null
    course_id = ReferenceField(Course, required=False, reverse_delete_rule=DENY, default=None)

    title = StringField(required=True)
    author = StringField(required=True)
    publication_date = DateTimeField(default=datetime.utcnow)
    file_path = StringField(required=True)  # PDF path
    status = IntField(required=True, choices=[0, 1])  # 0: inactive, 1: active
    created_date = DateTimeField(default=datetime.utcnow)

    meta = {
        'collection': 'ebooks',
        'indexes': ['exam_id', 'sub_exam_id', 'status', '-created_date']
    }
