Spaces:
Running
Running
File size: 2,602 Bytes
e69d432 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# backend/models.py
import uuid
import datetime
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, String, DateTime, ForeignKey, Text, ARRAY, Boolean
from sqlalchemy.dialects.postgresql import UUID
from sqlalchemy.orm import relationship
from sqlalchemy.sql import func
Base = declarative_base()
class User(Base):
__tablename__ = "users"
id = Column(String, primary_key=True, index=True)
name = Column(String)
hashed_password = Column(String)
department = Column(String)
role = Column(String, default="department")
documents = relationship("Document", back_populates="uploader")
# --- ADD THIS RELATIONSHIP ---
questions = relationship("Question", back_populates="user")
class Document(Base):
__tablename__ = "documents"
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
title = Column(String, index=True)
upload_date = Column(DateTime, default=datetime.datetime.utcnow)
file_path = Column(String, unique=True)
uploader_id = Column(String, ForeignKey("users.id"))
department = Column(String, index=True)
status = Column(String, default="completed", index=True)
summary = Column(Text, nullable=True)
deadlines = Column(ARRAY(String), nullable=True)
financial_terms = Column(ARRAY(String), nullable=True)
highlighted_file_path = Column(String, nullable=True)
uploader = relationship("User", back_populates="documents")
class Question(Base):
__tablename__ = "questions"
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
document_id = Column(UUID(as_uuid=True), ForeignKey("documents.id"), nullable=False)
question_text = Column(Text, nullable=False)
answer_text = Column(Text, nullable=True)
asked_at = Column(DateTime, default=datetime.datetime.utcnow)
user_id = Column(String, ForeignKey("users.id"))
document = relationship("Document")
# This relationship now correctly points to the 'questions' property in the User model
user = relationship("User", back_populates="questions")
class Notification(Base):
__tablename__ = "notifications"
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
document_id = Column(UUID(as_uuid=True), ForeignKey("documents.id"), nullable=False)
department = Column(String, nullable=False, index=True)
message = Column(String, nullable=False)
is_read = Column(Boolean, default=False)
created_at = Column(DateTime(timezone=True), server_default=func.now()) |