1
0
mirror of https://gitlab.com/MoonTestUse1/AdministrationItDepartmens.git synced 2025-08-14 00:25:46 +02:00

Создание чата9testt

This commit is contained in:
MoonTestUse1
2025-01-05 06:32:34 +06:00
parent 9ba671bdaa
commit 7f7838a0d3
28 changed files with 653 additions and 721 deletions

View File

@@ -1,45 +1,46 @@
"""Chat models."""
from sqlalchemy import Column, Integer, String, ForeignKey, DateTime, Boolean, Text
from sqlalchemy.sql import func
from sqlalchemy.orm import relationship
from app.database import Base
class Chat(Base):
"""Chat model."""
__tablename__ = "chats"
id = Column(Integer, primary_key=True, index=True)
employee_id = Column(Integer, ForeignKey("users.id"), nullable=False, unique=True)
admin_id = Column(Integer, ForeignKey("users.id"), nullable=False)
employee_id = Column(Integer, ForeignKey("users.id", ondelete="CASCADE"), nullable=False)
created_at = Column(DateTime(timezone=True), server_default=func.now())
updated_at = Column(DateTime(timezone=True), onupdate=func.now())
# Отношения
employee = relationship("User", foreign_keys=[employee_id], back_populates="employee_chats")
admin = relationship("User", foreign_keys=[admin_id], back_populates="admin_chats")
employee = relationship("User", back_populates="chats")
messages = relationship("Message", back_populates="chat", cascade="all, delete-orphan")
class Message(Base):
"""Message model."""
__tablename__ = "messages"
id = Column(Integer, primary_key=True, index=True)
chat_id = Column(Integer, ForeignKey("chats.id", ondelete="CASCADE"), nullable=False)
sender_id = Column(Integer, ForeignKey("users.id"), nullable=False)
sender_id = Column(Integer, ForeignKey("users.id", ondelete="CASCADE"), nullable=False)
content = Column(Text, nullable=False)
is_read = Column(Boolean, default=False)
created_at = Column(DateTime(timezone=True), server_default=func.now())
# Отношения
chat = relationship("Chat", back_populates="messages")
sender = relationship("User", back_populates="sent_messages")
sender = relationship("User", back_populates="messages")
files = relationship("ChatFile", back_populates="message", cascade="all, delete-orphan")
class ChatFile(Base):
"""Chat file model."""
__tablename__ = "chat_files"
id = Column(Integer, primary_key=True, index=True)
message_id = Column(Integer, ForeignKey("messages.id", ondelete="CASCADE"), nullable=False)
file_name = Column(String(255), nullable=False)
file_path = Column(String(255), nullable=False)
file_size = Column(Integer, nullable=False)
filename = Column(String, nullable=False)
file_path = Column(String, nullable=False)
created_at = Column(DateTime(timezone=True), server_default=func.now())
# Отношения

View File

@@ -1,18 +1,20 @@
"""Request model"""
from sqlalchemy import Column, Integer, String, ForeignKey, DateTime, Text
"""Request model."""
from sqlalchemy import Column, Integer, String, ForeignKey, DateTime, Text, Enum
from sqlalchemy.sql import func
from sqlalchemy.orm import relationship
from app.db.base_class import Base
from app.database import Base
from app.schemas.request import RequestPriority, RequestStatus
class Request(Base):
"""Request model."""
__tablename__ = "requests"
id = Column(Integer, primary_key=True, index=True)
employee_id = Column(Integer, ForeignKey("users.id"), nullable=False)
employee_id = Column(Integer, ForeignKey("users.id", ondelete="CASCADE"), nullable=False)
request_type = Column(String, nullable=False)
description = Column(Text, nullable=False)
priority = Column(String, nullable=False)
status = Column(String, default="new")
priority = Column(Enum(RequestPriority), nullable=False)
status = Column(Enum(RequestStatus), default=RequestStatus.NEW)
created_at = Column(DateTime(timezone=True), server_default=func.now())
updated_at = Column(DateTime(timezone=True), onupdate=func.now())

View File

@@ -1,9 +1,10 @@
"""User model."""
from sqlalchemy import Boolean, Column, Integer, String
from sqlalchemy.orm import relationship
from app.database import Base
class User(Base):
"""User model."""
__tablename__ = "users"
id = Column(Integer, primary_key=True, index=True)
@@ -13,10 +14,7 @@ class User(Base):
is_active = Column(Boolean, default=True)
is_admin = Column(Boolean, default=False)
# Отношения для чата
employee_chats = relationship("Chat", foreign_keys="[Chat.employee_id]", back_populates="employee")
admin_chats = relationship("Chat", foreign_keys="[Chat.admin_id]", back_populates="admin")
sent_messages = relationship("Message", back_populates="sender")
# Отношения для заявок
requests = relationship("Request", back_populates="employee")
# Отношения
requests = relationship("Request", back_populates="employee")
chats = relationship("Chat", back_populates="employee")
messages = relationship("Message", back_populates="sender")