"""
Notification Domain Models
"""

from sqlalchemy import Column, Integer, String, Text, ForeignKey, Boolean
from sqlalchemy.orm import relationship
from datetime import datetime
from .base import Base

class Notification(Base):
    """Notification model for user alerts"""
    __tablename__ = 'notifications'
    
    id = Column(Integer, primary_key=True, autoincrement=True)
    created_at = Column(String, nullable=False, default=lambda: datetime.now().strftime('%Y-%m-%dT%H:%M:%S'))
    title = Column(String)
    body = Column(Text)
    sender_id = Column(Integer, ForeignKey('users.id', ondelete='SET NULL'))
    recipient_id = Column(Integer, ForeignKey('users.id', ondelete='CASCADE'), nullable=False)
    reservation_id = Column(Integer, ForeignKey('reservations.id', ondelete='CASCADE'))
    is_read = Column(Integer, nullable=False, default=0)
    deleted_by_sender = Column(Integer, nullable=False, default=0)
    deleted_by_recipient = Column(Integer, nullable=False, default=0)
    
    # Relationships
    sender = relationship("User", foreign_keys=[sender_id])
    recipient = relationship("User", foreign_keys=[recipient_id])
    reservation = relationship("Reservation")
    
    def __repr__(self):
        return f"<Notification(id={self.id}, title='{self.title}', recipient_id={self.recipient_id})>"
