Files
LeDiscord/backend/models/ticket.py
2025-12-23 19:12:30 +01:00

46 lines
1.7 KiB
Python

from sqlalchemy import Column, Integer, String, DateTime, ForeignKey, Text, Enum as SQLEnum
from sqlalchemy.orm import relationship
from datetime import datetime
import enum
from config.database import Base
class TicketType(enum.Enum):
BUG = "bug"
FEATURE_REQUEST = "feature_request"
IMPROVEMENT = "improvement"
SUPPORT = "support"
OTHER = "other"
class TicketStatus(enum.Enum):
OPEN = "open"
IN_PROGRESS = "in_progress"
RESOLVED = "resolved"
CLOSED = "closed"
class TicketPriority(enum.Enum):
LOW = "low"
MEDIUM = "medium"
HIGH = "high"
URGENT = "urgent"
class Ticket(Base):
__tablename__ = "tickets"
id = Column(Integer, primary_key=True, index=True)
title = Column(String, nullable=False)
description = Column(Text, nullable=False)
ticket_type = Column(SQLEnum(TicketType), nullable=False, default=TicketType.OTHER)
status = Column(SQLEnum(TicketStatus), nullable=False, default=TicketStatus.OPEN)
priority = Column(SQLEnum(TicketPriority), nullable=False, default=TicketPriority.MEDIUM)
user_id = Column(Integer, ForeignKey("users.id"), nullable=False)
assigned_to = Column(Integer, ForeignKey("users.id"), nullable=True)
screenshot_path = Column(String, nullable=True)
admin_notes = Column(Text, nullable=True)
created_at = Column(DateTime, default=datetime.utcnow)
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
resolved_at = Column(DateTime, nullable=True)
# Relationships
user = relationship("User", foreign_keys=[user_id], back_populates="tickets")
assigned_admin = relationship("User", foreign_keys=[assigned_to])