harshnarayan12's picture
Upload 32 files
073bb25 verified
raw
history blame
1.64 kB
from sqlalchemy import (
Column,
String,
Integer,
Text,
TIMESTAMP,
CheckConstraint,
ForeignKey,
func,
)
from sqlalchemy.dialects.postgresql import UUID
from sqlalchemy.ext.declarative import declarative_base
import uuid
Base = declarative_base()
class UserProfile(Base):
__tablename__ = "user_profiles"
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
name = Column(String(100), nullable=False)
age = Column(Integer, CheckConstraint("age > 0 AND age <= 150"))
gender = Column(String(20), CheckConstraint(
"gender IN ('Male', 'Female', 'Non-binary', 'Other', 'Prefer not to say')"
))
city_region = Column(String(100))
profession = Column(String(100))
marital_status = Column(String(30), CheckConstraint(
"marital_status IN ('Single', 'In relationship', 'Married', 'Divorced', 'Widowed', 'Other', 'Prefer not to say')"
))
previous_mental_diagnosis = Column(Text, default="NA")
ethnicity = Column(String(50))
created_at = Column(TIMESTAMP(timezone=True), server_default=func.now())
updated_at = Column(TIMESTAMP(timezone=True), server_default=func.now(), onupdate=func.now())
class ConversationHistory(Base):
__tablename__ = "conversation_history"
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
user_id = Column(UUID(as_uuid=True), ForeignKey("user_profiles.id", ondelete="CASCADE"), nullable=False)
message = Column(Text, nullable=False)
response = Column(Text, nullable=False)
timestamp = Column(TIMESTAMP(timezone=True), server_default=func.now())