-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdb.py
41 lines (34 loc) · 1.17 KB
/
db.py
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
import os
import threading
import sqlalchemy
import sqlalchemy.orm
Base = sqlalchemy.orm.declarative_base()
engine = sqlalchemy.create_engine(
"postgresql://postgres:postgres@{}/postgres".format(
os.environ.get("POSTGRES_HOST", None) or "localhost"
)
)
lock = threading.Lock()
class User(Base):
__tablename__ = "user"
id = sqlalchemy.Column(sqlalchemy.Integer, primary_key=True)
login = sqlalchemy.Column(sqlalchemy.String)
hash_password = sqlalchemy.Column(sqlalchemy.String)
class Message(Base):
__tablename__ = "message"
id = sqlalchemy.Column(sqlalchemy.Integer, primary_key=True)
description = sqlalchemy.Column(sqlalchemy.String)
is_readed = sqlalchemy.Column(sqlalchemy.Boolean, default=False)
datetime = sqlalchemy.Column(sqlalchemy.DateTime)
sender_id = sqlalchemy.Column(
sqlalchemy.Integer, sqlalchemy.ForeignKey("user.id")
)
sender = sqlalchemy.orm.relationship(
"User", foreign_keys=[sender_id], backref="sended_messages"
)
receiver_id = sqlalchemy.Column(
sqlalchemy.Integer, sqlalchemy.ForeignKey("user.id")
)
receiver = sqlalchemy.orm.relationship(
"User", foreign_keys=[receiver_id], backref="received_messages"
)