company flows
This commit is contained in:
parent
6541284a4c
commit
cc3f3f3de5
17 changed files with 1960 additions and 66 deletions
|
|
@ -41,6 +41,13 @@ class Account(Base):
|
|||
date_of_birth: Mapped[date] = mapped_column(Date)
|
||||
phone_number: Mapped[str] = mapped_column(String(24), unique=True)
|
||||
company_domain: Mapped[str | None] = mapped_column(String(253), nullable=True)
|
||||
org_role: Mapped[str] = mapped_column(String(20), default="user")
|
||||
member_status: Mapped[str] = mapped_column(String(20), default="active")
|
||||
created_by_id: Mapped[uuid.UUID | None] = mapped_column(
|
||||
UUID(as_uuid=True),
|
||||
ForeignKey("users.id"),
|
||||
nullable=True,
|
||||
)
|
||||
password_hash: Mapped[str] = mapped_column(String(255))
|
||||
created_at: Mapped[datetime] = mapped_column(
|
||||
DateTime(timezone=True),
|
||||
|
|
@ -127,3 +134,93 @@ class SmtpCredential(Base):
|
|||
server_default=func.now(),
|
||||
)
|
||||
domain: Mapped[MailDomain] = relationship(back_populates="smtp_credentials")
|
||||
|
||||
|
||||
class MailGroup(Base):
|
||||
__tablename__ = "mail_groups"
|
||||
__table_args__ = (
|
||||
CheckConstraint(
|
||||
"group_type IN ('distribution', 'dynamic')",
|
||||
name="ck_mail_groups_group_type",
|
||||
),
|
||||
)
|
||||
|
||||
id: Mapped[uuid.UUID] = mapped_column(
|
||||
UUID(as_uuid=True),
|
||||
primary_key=True,
|
||||
default=uuid.uuid4,
|
||||
)
|
||||
company_domain: Mapped[str] = mapped_column(String(253), index=True)
|
||||
name: Mapped[str] = mapped_column(String(120))
|
||||
email: Mapped[str] = mapped_column(String(320), unique=True, index=True)
|
||||
group_type: Mapped[str] = mapped_column(String(20), default="distribution")
|
||||
created_by_id: Mapped[uuid.UUID | None] = mapped_column(
|
||||
UUID(as_uuid=True),
|
||||
ForeignKey("users.id"),
|
||||
nullable=True,
|
||||
)
|
||||
created_at: Mapped[datetime] = mapped_column(
|
||||
DateTime(timezone=True),
|
||||
server_default=func.now(),
|
||||
)
|
||||
members: Mapped[list["MailGroupMember"]] = relationship(
|
||||
back_populates="group",
|
||||
cascade="all, delete-orphan",
|
||||
)
|
||||
|
||||
|
||||
class MailGroupMember(Base):
|
||||
__tablename__ = "mail_group_members"
|
||||
|
||||
id: Mapped[uuid.UUID] = mapped_column(
|
||||
UUID(as_uuid=True),
|
||||
primary_key=True,
|
||||
default=uuid.uuid4,
|
||||
)
|
||||
group_id: Mapped[uuid.UUID] = mapped_column(
|
||||
UUID(as_uuid=True),
|
||||
ForeignKey("mail_groups.id"),
|
||||
index=True,
|
||||
)
|
||||
account_id: Mapped[uuid.UUID] = mapped_column(
|
||||
UUID(as_uuid=True),
|
||||
ForeignKey("users.id"),
|
||||
index=True,
|
||||
)
|
||||
group: Mapped[MailGroup] = relationship(back_populates="members")
|
||||
account: Mapped[Account] = relationship()
|
||||
|
||||
|
||||
class MailAlias(Base):
|
||||
__tablename__ = "mail_aliases"
|
||||
__table_args__ = (
|
||||
CheckConstraint(
|
||||
"alias_type IN ('user', 'group')",
|
||||
name="ck_mail_aliases_alias_type",
|
||||
),
|
||||
CheckConstraint(
|
||||
"status IN ('active', 'disabled')",
|
||||
name="ck_mail_aliases_status",
|
||||
),
|
||||
)
|
||||
|
||||
id: Mapped[uuid.UUID] = mapped_column(
|
||||
UUID(as_uuid=True),
|
||||
primary_key=True,
|
||||
default=uuid.uuid4,
|
||||
)
|
||||
company_domain: Mapped[str] = mapped_column(String(253), index=True)
|
||||
alias_address: Mapped[str] = mapped_column(String(320), unique=True, index=True)
|
||||
forwards_to: Mapped[str] = mapped_column(String(320))
|
||||
alias_type: Mapped[str] = mapped_column(String(20), default="user")
|
||||
is_domain_alias: Mapped[bool] = mapped_column(Boolean, default=False)
|
||||
status: Mapped[str] = mapped_column(String(20), default="active")
|
||||
created_by_id: Mapped[uuid.UUID | None] = mapped_column(
|
||||
UUID(as_uuid=True),
|
||||
ForeignKey("users.id"),
|
||||
nullable=True,
|
||||
)
|
||||
created_at: Mapped[datetime] = mapped_column(
|
||||
DateTime(timezone=True),
|
||||
server_default=func.now(),
|
||||
)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue