/
hed1ad
/
CloudGuard_API_Security_Platform
Обзор
Документация
Войти
/
hed1ad
/
CloudGuard_API_Security_Platform
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
backend/api_gateway/models.py
67 строк
3 KB
hed1ad
Add Auth + Reg
08 ноя 2025, 23:28
08 ноя 2025, 23:28
28c30c5
Код
Авторство
О чём код?
import uuid from datetime import datetime from sqlalchemy import Column, String, ForeignKey, Text, Enum as SQLEnum, Boolean from sqlalchemy.dialects.postgresql import UUID, JSON, TIMESTAMP from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import relationship import enum Base = declarative_base() class ScanStatus(str, enum.Enum): QUEUED = "queued" RUNNING = "running" COMPLETED = "completed" FAILED = "failed" class VulnerabilitySeverity(str, enum.Enum): CRITICAL = "CRITICAL" HIGH = "HIGH" MEDIUM = "MEDIUM" LOW = "LOW" class Scan(Base): __tablename__ = "scans" id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) target_url = Column(String(500), nullable=False) status = Column(SQLEnum(ScanStatus, values_callable=lambda obj: [e.value for e in obj]), nullable=False, default=ScanStatus.QUEUED) created_at = Column(TIMESTAMP(timezone=True), default=datetime.utcnow, nullable=False) started_at = Column(TIMESTAMP(timezone=True), nullable=True) completed_at = Column(TIMESTAMP(timezone=True), nullable=True) error_message = Column(Text, nullable=True) vulnerabilities = relationship("Vulnerability", back_populates="scan", cascade="all, delete-orphan") class Vulnerability(Base): __tablename__ = "vulnerabilities" id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) scan_id = Column(UUID(as_uuid=True), ForeignKey("scans.id", ondelete="CASCADE"), nullable=False) type = Column(String(100), nullable=False) severity = Column(SQLEnum(VulnerabilitySeverity, values_callable=lambda obj: [e.value for e in obj]), nullable=False) endpoint = Column(String(500), nullable=False) method = Column(String(10), nullable=False, default="GET") description = Column(Text) evidence = Column(JSON) created_at = Column(TIMESTAMP(timezone=True), default=datetime.utcnow, nullable=False) scan = relationship("Scan", back_populates="vulnerabilities") class User(Base): __tablename__ = "users" id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) username = Column(String(50), unique=True, nullable=False, index=True) email = Column(String(255), unique=True, nullable=False, index=True) full_name = Column(String(255), nullable=False) hashed_password = Column(String(255), nullable=False) disabled = Column(Boolean, default=False, nullable=False) created_at = Column(TIMESTAMP(timezone=True), default=datetime.utcnow, nullable=False)