from datetime import datetime
from app.extensions import db


class VerseNote(db.Model):
    __tablename__ = 'verse_notes'

    id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False) # The Guru who created it
    murid_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=True) # The student targeted
    hukum_bacaan_id = db.Column(db.Integer, db.ForeignKey('hukum_bacaan.id'), nullable=True)
    verse_key = db.Column(db.String(20), nullable=False)
    surah_number = db.Column(db.Integer, nullable=False)
    surah_name = db.Column(db.String(200), nullable=False)
    verse_text = db.Column(db.Text, nullable=False)
    word_text = db.Column(db.Text, nullable=True)
    word_translation = db.Column(db.Text, nullable=True)
    word_transliteration = db.Column(db.Text, nullable=True)
    word_position = db.Column(db.Integer, nullable=True)
    content = db.Column(db.Text, nullable=False)
    created_at = db.Column(db.DateTime, default=datetime.utcnow)
    updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)

    user = db.relationship('User', foreign_keys=[user_id], backref='created_notes')
    murid = db.relationship('User', foreign_keys=[murid_id], backref='received_notes')
    hukum_bacaan = db.relationship('HukumBacaan', backref='notes')

    def __repr__(self):
        return f'<VerseNote {self.verse_key} by user {self.user_id}>'
