-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathmodels.py
More file actions
91 lines (71 loc) · 2.99 KB
/
models.py
File metadata and controls
91 lines (71 loc) · 2.99 KB
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
from sqlalchemy import (
TIMESTAMP,
Column,
Float,
ForeignKey,
Integer,
String,
Text,
func,
BOOLEAN,
)
from sqlalchemy.orm import relationship
from database import Base
class User(Base):
__tablename__ = "users"
user_id = Column(Integer, primary_key=True)
email = Column(String, unique=True, index=True, nullable=False)
name = Column(String, nullable=False)
hashed_password = Column(Text, nullable=False)
is_teacher = Column(BOOLEAN, default=False, nullable=False)
phone_number = Column(String, nullable=False)
community_messages = relationship(
"CommunityChatMessage",
backref="user",
foreign_keys="[CommunityChatMessage.user_id]",
)
tickets = relationship("Ticket", backref="user", foreign_keys="[Ticket.user_id]")
sos = relationship("SOS", backref="user", foreign_keys="[SOS.user_id]")
ticket_chat_messages = relationship(
"TicketChatMessage",
foreign_keys="[TicketChatMessage.user_id]",
backref="user",
)
class CommunityChatMessage(Base):
__tablename__ = "community_chat_messages"
message_id = Column(Integer, primary_key=True)
user_id = Column(Integer, ForeignKey("users.user_id"), nullable=False)
message_text = Column(Text, nullable=False)
created_at = Column("created_at", TIMESTAMP, server_default=func.now())
class SOS(Base):
__tablename__ = "sos"
sos_id = Column(Integer, primary_key=True)
user_id = Column(Integer, ForeignKey("users.user_id"), nullable=False)
lat = Column(Float(precision=53), nullable=False)
long = Column(Float(precision=53), nullable=False)
is_open = Column(BOOLEAN, default=True, nullable=False)
class Ticket(Base):
__tablename__ = "tickets"
ticket_id = Column(Integer, primary_key=True)
user_id = Column(Integer, ForeignKey("users.user_id"), nullable=False)
teacher_id = Column(Integer, ForeignKey("users.user_id"), nullable=False)
is_open = Column(BOOLEAN, default=True, nullable=False)
is_anonymous = Column(BOOLEAN, default=False, nullable=False)
ticket_chat_messages = relationship("TicketChatMessage", backref="ticket")
reports = relationship(
"TicketReport", backref="ticket", foreign_keys="[TicketReport.ticket_id]"
)
class TicketReport(Base):
__tablename__ = "ticket_reports"
report_id = Column(Integer, primary_key=True)
ticket_id = Column(Integer, ForeignKey("tickets.ticket_id"), nullable=False)
report_content = Column(Text, nullable=False)
lat = Column(Float(precision=53), nullable=False)
long = Column(Float(precision=53), nullable=False)
class TicketChatMessage(Base):
__tablename__ = "ticket_chat_messages"
message_id = Column(Integer, primary_key=True)
ticket_id = Column(Integer, ForeignKey("tickets.ticket_id"), nullable=False)
user_id = Column(Integer, ForeignKey("users.user_id"), nullable=False)
message_text = Column(Text, nullable=False)
created_at = Column("created_at", TIMESTAMP, server_default=func.now())