SHSH_Messenger

Форк
0
/
models.py 
56 строк · 2.2 Кб
1
import os
2
from sqlalchemy import create_engine, Column, Integer, String, ForeignKey, DateTime, func
3
from sqlalchemy.ext.declarative import declarative_base
4
from sqlalchemy.orm import sessionmaker, relationship
5

6
DATABASE_URL = os.getenv("DATABASE_URL", "postgresql://postgres:lolhilol@db/chatapp")
7

8
engine = create_engine(DATABASE_URL)
9
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
10
Base = declarative_base()
11

12
class User(Base):
13
    __tablename__ = 'users'
14
    id = Column(Integer, primary_key=True, index=True)
15
    username = Column(String, unique=True, index=True)
16
    password = Column(String)
17
    last_seen = Column(DateTime, default=func.now())
18
    profile = relationship("UserProfileModel", uselist=False, back_populates="user")
19

20
class UserProfileModel(Base):
21
    __tablename__ = 'profiles'
22
    id = Column(Integer, primary_key=True, index=True)
23
    user_id = Column(Integer, ForeignKey('users.id'))
24
    first_name = Column(String)
25
    last_name = Column(String)
26
    profile_photo = Column(String)
27
    user = relationship("User", back_populates="profile")
28

29
class Chat(Base):
30
    __tablename__ = 'chats'
31
    id = Column(Integer, primary_key=True, index=True)
32
    user1_id = Column(Integer, ForeignKey('users.id'))
33
    user2_id = Column(Integer, ForeignKey('users.id'))
34
    user1 = relationship('User', foreign_keys=[user1_id])
35
    user2 = relationship('User', foreign_keys=[user2_id])
36

37
class Message(Base):
38
    __tablename__ = 'messages'
39
    id = Column(Integer, primary_key=True, index=True)
40
    sender_id = Column(Integer, ForeignKey('users.id'))
41
    receiver_id = Column(Integer, ForeignKey('users.id'))
42
    chat_id = Column(Integer, ForeignKey('chats.id'))
43
    content = Column(String)
44
    timestamp = Column(DateTime, default=func.now())
45
    sender = relationship('User', foreign_keys=[sender_id])
46
    receiver = relationship('User', foreign_keys=[receiver_id])
47
    chat = relationship('Chat', foreign_keys=[chat_id])
48

49
class UploadedImage(Base):
50
    __tablename__ = "uploaded_images"
51
    id = Column(Integer, primary_key=True, index=True)
52
    filename = Column(String, unique=True, index=True)
53
    file_path = Column(String, unique=True)
54

55

56
Base.metadata.create_all(bind=engine)
57

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.