from datetime import datetime

from sqlalchemy import Integer, String, DateTime
from sqlalchemy.orm import Mapped, mapped_column

from app.extensions.db import db

class AuditLog(db.Model):
    __tablename__ = 'auditlog'

    id: Mapped[int] = mapped_column(Integer, primary_key=True)
    ldap_user_id: Mapped[str] = mapped_column(String(255), nullable=False)
    username: Mapped[str | None] = mapped_column(String(255))
    action: Mapped[str] = mapped_column(String(255), nullable=False)
    details: Mapped[str | None] = mapped_column(String(1024))
    timestamp: Mapped[datetime] = mapped_column(DateTime, default=datetime.utcnow)
    ipaddress: Mapped[str] = mapped_column(String(255), nullable=False)
    def __repr__(self):
        return f"<AuditLog(ldap_user_id='{self.ldap_user_id}', username='{self.username}', action='{self.action}', timestamp='{self.timestamp}')>"