# from mongoengine import Document, ReferenceField, StringField, ListField
# from datetime import datetime

# class Image(Document):
#     user_id = ReferenceField('User')
#     image = ListField(StringField())
#     output_file = StringField()
#     extracted_text = StringField()
#     qna_output_file = StringField()
#     extracted_qna = StringField()
#     other_extracted_qna = StringField()
#     mcq_output_file = StringField()
#     extracted_mcq = StringField()
#     other_extracted_mcq = StringField()
#     title = StringField()
#     subject_topic = StringField()
#     created_date = StringField(default=datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
#     meta = {'collection': 'images'}


# from mongoengine import Document, ReferenceField, StringField, DateTimeField
# from datetime import datetime

# class Image(Document):
#     user_id = ReferenceField('User', null=True)
#     image = StringField(required=True)                              # Originally type `text` in SQL
#     title = StringField(null=True)
#     subject_topic = StringField(null=True)
#     output_file = StringField(null=True)

#     extracted_text = StringField(null=True)
#     qna_output_file = StringField(null=True)
#     extracted_qna = StringField(null=True)
#     other_extracted_qna = StringField(null=True)
#     mcq_output_file = StringField(null=True)
#     extracted_mcq = StringField(null=True)
#     other_extracted_mcq = StringField(null=True)

#     created_date = DateTimeField(default=datetime.utcnow)

#     meta = {'collection': 'images'}

#     def to_json(self):
#         return {
#             'id': str(self.id),
#             'user_id': str(self.user_id.id) if self.user_id else None,
#             'image': self.image,
#             'title': self.title,
#             'subject_topic': self.subject_topic,
#             'output_file': self.output_file,
#             'extracted_text': self.extracted_text,
#             'qna_output_file': self.qna_output_file,
#             'extracted_qna': self.extracted_qna,
#             'other_extracted_qna': self.other_extracted_qna,
#             'mcq_output_file': self.mcq_output_file,
#             'extracted_mcq': self.extracted_mcq,
#             'other_extracted_mcq': self.other_extracted_mcq,
#             'created_date': self.created_date.strftime('%Y-%m-%d %H:%M:%S') if self.created_date else None

#         }

from mongoengine import (
    Document,
    ReferenceField,
    StringField,
    DictField,
    DateTimeField
)
from datetime import datetime

class Image(Document):
    user_id = ReferenceField('User', null=True)
    image = StringField(required=True)  # Image file path or name
    title = StringField(null=True)
    subject_topic = StringField(null=True)
    output_file = StringField(null=True)

    # Changed from StringField to DictField
    extracted_text = DictField(null=True)
    qna_output_file = StringField(null=True)
    extracted_qna = DictField(null=True)
    other_extracted_qna = DictField(null=True)
    mcq_output_file = StringField(null=True)
    extracted_mcq = DictField(null=True)
    other_extracted_mcq = DictField(null=True)

    created_date = DateTimeField(default=datetime.utcnow)

    meta = {'collection': 'images'}

    def to_json(self):
        return {
            'id': str(self.id),
            'user_id': str(self.user_id.id) if self.user_id else None,
            'image': self.image,
            'title': self.title,
            'subject_topic': self.subject_topic,
            'output_file': self.output_file,
            'extracted_text': self.extracted_text,
            'qna_output_file': self.qna_output_file,
            'extracted_qna': self.extracted_qna,
            'other_extracted_qna': self.other_extracted_qna,
            'mcq_output_file': self.mcq_output_file,
            'extracted_mcq': self.extracted_mcq,
            'other_extracted_mcq': self.other_extracted_mcq,
            'created_date': self.created_date.strftime('%Y-%m-%d %H:%M:%S') if self.created_date else None
        }
