File size: 1,640 Bytes
073bb25 |
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 |
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())
|