31 lines
1.2 KiB
Python
Executable File
31 lines
1.2 KiB
Python
Executable File
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)
|