feat: add alias id when deleting alias

This commit is contained in:
Carlos Quintana 2025-09-04 10:04:39 +02:00 committed by Adrià Casajús
parent ee5a2a73d3
commit 5d6f3f114f
4 changed files with 49 additions and 1 deletions

View file

@ -51,6 +51,7 @@ def __delete_if_custom_domain(
email=alias.email,
domain_id=alias.custom_domain_id,
reason=reason,
alias_id=alias.id,
)
Session.add(domain_deleted_alias)
LOG.i(
@ -99,7 +100,7 @@ def perform_alias_deletion(
if not DeletedAlias.get_by(email=alias.email):
deleted_alias = DeletedAlias(
email=alias.email, reason=alias.delete_reason or reason
email=alias.email, reason=alias.delete_reason or reason, alias_id=alias.id
)
Session.add(deleted_alias)
LOG.i(f"Moving {alias} to global trash {deleted_alias}")

View file

@ -2462,6 +2462,9 @@ class DeletedAlias(Base, ModelMixin):
default=AliasDeleteReason.Unspecified,
server_default=str(AliasDeleteReason.Unspecified.value),
)
alias_id = sa.Column(
sa.Integer, nullable=True, server_default=None, default=None, index=True
)
@classmethod
def create(cls, **kw):
@ -2736,6 +2739,7 @@ class DomainDeletedAlias(Base, ModelMixin):
__table_args__ = (
sa.UniqueConstraint("domain_id", "email", name="uq_domain_trash"),
sa.Index("ix_domain_deleted_alias_user_id", "user_id"),
sa.Index("ix_domain_deleted_alias_alias_id", "alias_id"),
)
email = sa.Column(sa.String(256), nullable=False)
@ -2753,6 +2757,13 @@ class DomainDeletedAlias(Base, ModelMixin):
server_default=str(AliasDeleteReason.Unspecified.value),
)
alias_id = sa.Column(
sa.Integer,
nullable=True,
server_default=None,
default=None,
)
@classmethod
def create(cls, **kw):
raise Exception("should use delete_alias(alias,user) instead")

View file

@ -0,0 +1,34 @@
"""deleted alias id
Revision ID: 3ffdea52697d
Revises: 9e80159405af
Create Date: 2025-09-04 09:57:23.255112
"""
import sqlalchemy_utils
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = '3ffdea52697d'
down_revision = '9e80159405af'
branch_labels = None
depends_on = None
def upgrade():
with op.get_context().autocommit_block():
op.add_column('deleted_alias', sa.Column('alias_id', sa.Integer(), nullable=True))
op.create_index(op.f('ix_deleted_alias_alias_id'), 'deleted_alias', ['alias_id'], unique=False, postgresql_concurrently=True)
op.add_column('domain_deleted_alias', sa.Column('alias_id', sa.Integer(), nullable=True))
op.create_index('ix_domain_deleted_alias_alias_id', 'domain_deleted_alias', ['alias_id'], unique=False, postgresql_concurrently=True)
def downgrade():
with op.get_context().autocommit_block():
op.drop_index('ix_domain_deleted_alias_alias_id', table_name='domain_deleted_alias', postgresql_concurrently=True)
op.drop_column('domain_deleted_alias', 'alias_id')
op.drop_index(op.f('ix_deleted_alias_alias_id'), table_name='deleted_alias', postgresql_concurrently=True)
op.drop_column('deleted_alias', 'alias_id')

View file

@ -93,6 +93,7 @@ def ensure_alias_is_deleted(
deleted_alias: Optional[DeletedAlias] = DeletedAlias.get_by(email=alias_email)
assert deleted_alias is not None
assert deleted_alias.reason == reason
assert deleted_alias.alias_id == alias_id
# Delete alias
@ -158,6 +159,7 @@ def test_alias_custom_domain_perform_deletion_moves_to_domain_deleted_alias():
deleted_custom_alias = DomainDeletedAlias.get_by(email=alias_email)
assert deleted_custom_alias is not None
assert deleted_custom_alias.alias_id == alias_id
# move_alias_to_trash