from datetime import datetime from sqlalchemy import Boolean, Column, Integer, String, Text, DateTime, Float, ForeignKey from sqlalchemy.orm import relationship from app.core.database import Base class TenantScheduleResult(Base): __tablename__ = "tenant_schedule_results" id = Column(Integer, primary_key=True, index=True, autoincrement=True) schedule_log_id = Column(Integer, ForeignKey("schedule_logs.id"), nullable=False, index=True) tenant_id = Column(Integer, ForeignKey("tenants.id"), nullable=False, index=True) traefik_status = Column(Boolean) traefik_done_at = Column(DateTime) sso_result = Column(Boolean) sso_done_at = Column(DateTime) mailbox_result = Column(Boolean) mailbox_done_at = Column(DateTime) nc_result = Column(Boolean) nc_done_at = Column(DateTime) office_result = Column(Boolean) office_done_at = Column(DateTime) fail_reason = Column(Text) quota_usage = Column(Float) # GB recorded_at = Column(DateTime, nullable=False, default=datetime.utcnow) schedule_log = relationship("ScheduleLog", back_populates="tenant_results") tenant = relationship("Tenant", back_populates="schedule_results") class AccountScheduleResult(Base): __tablename__ = "account_schedule_results" id = Column(Integer, primary_key=True, index=True, autoincrement=True) schedule_log_id = Column(Integer, ForeignKey("schedule_logs.id"), nullable=False, index=True) account_id = Column(Integer, ForeignKey("accounts.id"), nullable=False, index=True) sso_uuid = Column(String(100)) sso_account = Column(String(100)) sso_result = Column(Boolean) sso_done_at = Column(DateTime) mailbox_result = Column(Boolean) mailbox_done_at = Column(DateTime) nc_result = Column(Boolean) nc_done_at = Column(DateTime) fail_reason = Column(Text) quota_usage = Column(Float) # GB recorded_at = Column(DateTime, nullable=False, default=datetime.utcnow) schedule_log = relationship("ScheduleLog", back_populates="account_results") account = relationship("Account", back_populates="schedule_results")