created initial db models
parent
7d93da417b
commit
0aec29086d
|
|
@ -0,0 +1,50 @@
|
||||||
|
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, relationship
|
||||||
|
from sqlalchemy import Boolean, ForeignKey, String
|
||||||
|
from typing import Optional, List
|
||||||
|
|
||||||
|
class Base(DeclarativeBase):
|
||||||
|
pass
|
||||||
|
|
||||||
|
class MailServer(Base):
|
||||||
|
__tablename__ = 'mail_server'
|
||||||
|
id: Mapped[int] = mapped_column(primary_key=True)
|
||||||
|
name: Mapped[str] = mapped_column(String(100))
|
||||||
|
description: Mapped[Optional[str]]
|
||||||
|
host: Mapped[str] = mapped_column(String(255))
|
||||||
|
port: Mapped[int]
|
||||||
|
# TODO: do not store password in plain text in the db! Ideally nor the username.
|
||||||
|
username: Mapped[str] = mapped_column(String(255))
|
||||||
|
password: Mapped[str] = mapped_column(String(255))
|
||||||
|
messages: Mapped[List['Message']] = relationship(back_populates='mail_server', cascade='all, delete-orphan')
|
||||||
|
|
||||||
|
|
||||||
|
class ContactList(Base):
|
||||||
|
__tablename__ = 'contact_list'
|
||||||
|
id: Mapped[int] = mapped_column(primary_key=True)
|
||||||
|
name: Mapped[str] = mapped_column(String(100))
|
||||||
|
description: Mapped[Optional[str]]
|
||||||
|
is_live: Mapped[bool] = mapped_column(Boolean, default=False)
|
||||||
|
short_name: Mapped[str] = mapped_column(String(20))
|
||||||
|
full_name: Mapped[str] = mapped_column(String(255))
|
||||||
|
email_address: Mapped[str] = mapped_column(String(255))
|
||||||
|
contact_lists_test: Mapped[List['Message']] = relationship(back_populates='contact_list', cascade='all, delete-orphan')
|
||||||
|
contact_lists_live: Mapped[List['Message']] = relationship(back_populates='contact_list', cascade='all, delete-orphan')
|
||||||
|
|
||||||
|
|
||||||
|
class Message(Base):
|
||||||
|
__tablename__ = 'message'
|
||||||
|
id: Mapped[int] = mapped_column(primary_key=True)
|
||||||
|
description: Mapped[str] = mapped_column(String(255))
|
||||||
|
notes: Mapped[[Optional[str]]]
|
||||||
|
is_complete: Mapped[bool] = mapped_column(Boolean, default=False)
|
||||||
|
mail_server_id: Mapped[int] = mapped_column(ForeignKey('mail_server.id'))
|
||||||
|
mail_server: Mapped['MailServer'] = relationship(back_populates='messages')
|
||||||
|
test_contacts_id: Mapped[int] = mapped_column(ForeignKey('contact_list.id'))
|
||||||
|
test_contacts: Mapped['ContactList'] = relationship(back_populates='contact_lists_test')
|
||||||
|
live_contacts_id: Mapped[int] = mapped_column(ForeignKey('contact_list.id'))
|
||||||
|
live_contacts: Mapped['ContactList'] = relationship(back_populates='contact_lists_live')
|
||||||
|
sent: Mapped[Optional[str]]
|
||||||
|
from_name: Mapped[str] = mapped_column(String(255))
|
||||||
|
from_address: Mapped[str] = mapped_column(String(255))
|
||||||
|
subject_line: Mapped[str] = mapped_column(String(255))
|
||||||
|
message_body: Mapped[str]
|
||||||
Loading…
Reference in New Issue