models.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. from __future__ import annotations
  2. from app import db
  3. class User(db.Model):
  4. __tablename__ = "users"
  5. id = db.Column(db.Uuid(as_uuid=False), primary_key=True)
  6. username = db.Column(db.String(64), unique=True, nullable=False)
  7. display_name = db.Column(db.String(100))
  8. password_hash = db.Column(db.Text, nullable=False)
  9. status = db.Column(db.String(20), nullable=False, default="active")
  10. created_at = db.Column(db.DateTime(timezone=True), nullable=False)
  11. updated_at = db.Column(db.DateTime(timezone=True), nullable=False)
  12. last_login_at = db.Column(db.DateTime(timezone=True))
  13. class Role(db.Model):
  14. __tablename__ = "roles"
  15. id = db.Column(db.Uuid(as_uuid=False), primary_key=True)
  16. name = db.Column(db.String(32), unique=True, nullable=False)
  17. description = db.Column(db.String(200), nullable=False)
  18. class UserRole(db.Model):
  19. __tablename__ = "user_roles"
  20. user_id = db.Column(db.Uuid(as_uuid=False), primary_key=True)
  21. role_id = db.Column(db.Uuid(as_uuid=False), primary_key=True)
  22. class AuthAuditEvent(db.Model):
  23. __tablename__ = "auth_audit_events"
  24. id = db.Column(db.BigInteger, primary_key=True)
  25. user_id = db.Column(db.Uuid(as_uuid=False))
  26. username = db.Column(db.String(64))
  27. event_type = db.Column(db.String(40), nullable=False)
  28. success = db.Column(db.Boolean, nullable=False)