multilingual_rag / database /database_models.py
ajoy0071998's picture
conversation
3d722fe
Raw
History Blame Contribute Delete
2.63 kB
from sqlalchemy import (
Column, Integer, String, Date, Boolean, ForeignKey,
Text, DECIMAL, TIMESTAMP, UniqueConstraint, Index, Enum,
DateTime, CheckConstraint, Time,JSON
)
from sqlalchemy.orm import relationship, declarative_base
from sqlalchemy.dialects.postgresql import JSONB
from sqlalchemy.sql import func
Base = declarative_base()
class users(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True, index=True)
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 = Column(Integer, primary_key=True, index=True)
file_name = Column(String, unique=True, index=True)
file_type = Column(String)
file_size = Column(Integer)
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(Integer, ForeignKey('users.id'))
user = relationship("users", back_populates="documents")
class conversations(Base):
__tablename__ = 'conversations'
id = Column(Integer, primary_key=True, index=True)
conversation_uuid = Column(String,unique=True,index=True,nullable=False)
user_id = Column(Integer, 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 = Column(Integer, primary_key=True, index=True)
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")