File size: 1,651 Bytes
9cb712d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
from sqlalchemy import (
    Column, Integer, Text, Boolean, DateTime, ForeignKey, String, func

)
from sqlalchemy.orm import DeclarativeBase, relationship

class Base(DeclarativeBase):
    pass


class User(Base):
    __tablename__ = "users"

    id         = Column(Integer, primary_key=True, autoincrement=True)
    email      = Column(String, unique=True, nullable=False)
    created_at = Column(DateTime, default=func.now())

    received_emails = relationship("ReceivedEmail", back_populates="owner")
    sent_emails     = relationship("SentEmail",     back_populates="sender")


class ReceivedEmail(Base):
    __tablename__ = "received_emails"

    id           = Column(Integer, primary_key=True, autoincrement=True)
    thread_id    = Column(String, nullable=False) 
    owner_id     = Column(Integer, ForeignKey("users.id"), nullable=False)
    sender_email = Column(Text, nullable=False)
    subject      = Column(Text)
    body         = Column(Text)
    received_at  = Column(DateTime, default=func.now())
    is_safe      = Column(Boolean, default=False)
    owner = relationship("User", back_populates="received_emails")


class SentEmail(Base):
    __tablename__ = "sent_emails"

    id              = Column(Integer, primary_key=True, autoincrement=True)
    thread_id    = Column(String, nullable=False) 
    sender_id       = Column(Integer, ForeignKey("users.id"), nullable=False)
    recipient_email = Column(Text,    nullable=False)
    subject         = Column(Text)
    body            = Column(Text)
    sent_at         = Column(DateTime, default=func.now())

    sender = relationship("User", back_populates="sent_emails")