"""
個人化服務 Model
定義可為員工啟用的個人服務（SSO、Email、Calendar、Drive、Office）
"""
from datetime import datetime
from sqlalchemy import Column, Integer, String, Boolean, DateTime, UniqueConstraint

from app.db.base import Base


class PersonalService(Base):
    """個人化服務表"""

    __tablename__ = "personal_services"
    __table_args__ = (
        UniqueConstraint("service_code", name="uq_personal_service_code"),
    )

    id = Column(Integer, primary_key=True, index=True)
    service_code = Column(String(20), unique=True, nullable=False, comment="服務代碼: SSO/Email/Calendar/Drive/Office")
    service_name = Column(String(100), nullable=False, comment="服務名稱")
    description = Column(String(500), nullable=True, comment="服務說明")
    is_active = Column(Boolean, default=True, nullable=False, comment="是否啟用")

    # 通用欄位
    edit_by = Column(String(100), nullable=True, comment="最後編輯者")
    created_at = Column(DateTime, default=datetime.utcnow, nullable=False, comment="建立時間")
    updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow, nullable=False, comment="更新時間")

    def __repr__(self):
        return f"<PersonalService {self.service_code} - {self.service_name}>"
