from sqlalchemy import Column, Integer, String, Boolean, DateTime, ForeignKey, Text, Numeric
from sqlalchemy.sql import func
from app.db.base import Base

class EmailProvider(Base):
    __tablename__ = 'email_providers'
    __table_args__ = {'schema': 'data'}
    id = Column(Integer, PRIMARY KEY=True)
    name = Column(String(50), nullable=False)
    priority = Column(Integer, default=1)
    provider_type = Column(String(10), default='SMTP')
    host = Column(String(255))
    port = Column(Integer)
    username = Column(String(255))
    password_hash = Column(String(255))
    is_active = Column(Boolean, default=True)
    daily_limit = Column(Integer, default=300)
    current_daily_usage = Column(Integer, default=0)

class EmailLog(Base):
    __tablename__ = 'email_logs'
    __table_args__ = {'schema': 'data'}
    id = Column(Integer, PRIMARY KEY=True)
    user_id = Column(Integer, ForeignKey('data.users.id'), nullable=True)
    email_type = Column(String(50))
    recipient = Column(String(255))
    provider_id = Column(Integer, ForeignKey('data.email_providers.id'))
    status = Column(String(20))
    sent_at = Column(DateTime(timezone=True), server_default=func.now())
    error_message = Column(Text)
