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())