multilingual_rag / database /database_models.py
ajoy0071998's picture
database update
b146c64
Raw History Blame Contribute Delete
2.91 kB
import uuid
from sqlalchemy import Column, DateTime, Integer, String, Boolean, ForeignKey ,DateTime,JSON,Uuid,String
from sqlalchemy.orm import Mapped, relationship, declarative_base
import uuid
from sqlalchemy.sql import func
Base = declarative_base()
class users(Base):
__tablename__ = 'users'
id:Mapped[uuid.UUID] = Column(Uuid(as_uuid=True), primary_key=True, index=True, default=uuid.uuid4)
username = Column(String, unique=True, index=True)
email = Column(String, unique=True, index=True)
hashed_password = Column(String)
is_active = Column(Boolean, default=True)
is_superuser = Column(Boolean, default=False)
is_verified = Column(Boolean, default=False)
created_at = Column(DateTime, default=func.now())
updated_at = Column(DateTime, default=func.now(), onupdate=func.now())
last_login = Column(DateTime, default=func.now(), onupdate=func.now())
documents = relationship("documents", back_populates="user")
conversations = relationship("conversations", back_populates="user")
class documents(Base):
__tablename__ = 'documents'
id:Mapped[uuid.UUID] = Column(Uuid(as_uuid=True), primary_key=True, index=True, default=uuid.uuid4)
file_name = Column(String)
file_type = Column(String)
file_size = Column(Integer)
filebase_key = Column(String, nullable=True, unique=True)
filebase_url = Column(String, nullable=True)
bucket_name = Column(String, nullable=False, default="pdf-doc-docx")
chunks = Column(Integer)
primary_language = Column(String)
created_at = Column(DateTime, default=func.now())
updated_at = Column(DateTime, default=func.now(), onupdate=func.now())
user_id = Column(Uuid(as_uuid=True), ForeignKey('users.id'))
user = relationship("users", back_populates="documents")
class conversations(Base):
__tablename__ = 'conversations'
id:Mapped[uuid.UUID] = Column(Uuid(as_uuid=True), primary_key=True, index=True, default=uuid.uuid4)
conversation_uuid = Column(String,unique=True,index=True,nullable=False)
user_id = Column(Uuid(as_uuid=True), ForeignKey('users.id'))
meta_data = Column(JSON, nullable=True)
user = relationship("users", back_populates="conversations")
messages = relationship("messages", back_populates="conversation")
class messages(Base):
__tablename__ = 'messages'
id:Mapped[uuid.UUID] = Column(Uuid(as_uuid=True), primary_key=True, index=True, default=uuid.uuid4)
conversation_id = Column(
String,
ForeignKey('conversations.conversation_uuid'),
index=True,
nullable=False
)
role = Column(String)
content = Column(String)
meta_data = Column(JSON, nullable=True)
created_at = Column(DateTime, default=func.now())
conversation = relationship("conversations", back_populates="messages")