Skip to content

Commit 5d6f3f1

Browse files
cquintana92acasajus
authored andcommitted
feat: add alias id when deleting alias
1 parent ee5a2a7 commit 5d6f3f1

File tree

4 files changed

+49
-1
lines changed

4 files changed

+49
-1
lines changed

app/alias_delete.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ def __delete_if_custom_domain(
5151
email=alias.email,
5252
domain_id=alias.custom_domain_id,
5353
reason=reason,
54+
alias_id=alias.id,
5455
)
5556
Session.add(domain_deleted_alias)
5657
LOG.i(
@@ -99,7 +100,7 @@ def perform_alias_deletion(
99100

100101
if not DeletedAlias.get_by(email=alias.email):
101102
deleted_alias = DeletedAlias(
102-
email=alias.email, reason=alias.delete_reason or reason
103+
email=alias.email, reason=alias.delete_reason or reason, alias_id=alias.id
103104
)
104105
Session.add(deleted_alias)
105106
LOG.i(f"Moving {alias} to global trash {deleted_alias}")

app/models.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2462,6 +2462,9 @@ class DeletedAlias(Base, ModelMixin):
24622462
default=AliasDeleteReason.Unspecified,
24632463
server_default=str(AliasDeleteReason.Unspecified.value),
24642464
)
2465+
alias_id = sa.Column(
2466+
sa.Integer, nullable=True, server_default=None, default=None, index=True
2467+
)
24652468

24662469
@classmethod
24672470
def create(cls, **kw):
@@ -2736,6 +2739,7 @@ class DomainDeletedAlias(Base, ModelMixin):
27362739
__table_args__ = (
27372740
sa.UniqueConstraint("domain_id", "email", name="uq_domain_trash"),
27382741
sa.Index("ix_domain_deleted_alias_user_id", "user_id"),
2742+
sa.Index("ix_domain_deleted_alias_alias_id", "alias_id"),
27392743
)
27402744

27412745
email = sa.Column(sa.String(256), nullable=False)
@@ -2753,6 +2757,13 @@ class DomainDeletedAlias(Base, ModelMixin):
27532757
server_default=str(AliasDeleteReason.Unspecified.value),
27542758
)
27552759

2760+
alias_id = sa.Column(
2761+
sa.Integer,
2762+
nullable=True,
2763+
server_default=None,
2764+
default=None,
2765+
)
2766+
27562767
@classmethod
27572768
def create(cls, **kw):
27582769
raise Exception("should use delete_alias(alias,user) instead")
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
"""deleted alias id
2+
3+
Revision ID: 3ffdea52697d
4+
Revises: 9e80159405af
5+
Create Date: 2025-09-04 09:57:23.255112
6+
7+
"""
8+
import sqlalchemy_utils
9+
from alembic import op
10+
import sqlalchemy as sa
11+
12+
13+
# revision identifiers, used by Alembic.
14+
revision = '3ffdea52697d'
15+
down_revision = '9e80159405af'
16+
branch_labels = None
17+
depends_on = None
18+
19+
20+
def upgrade():
21+
with op.get_context().autocommit_block():
22+
op.add_column('deleted_alias', sa.Column('alias_id', sa.Integer(), nullable=True))
23+
op.create_index(op.f('ix_deleted_alias_alias_id'), 'deleted_alias', ['alias_id'], unique=False, postgresql_concurrently=True)
24+
op.add_column('domain_deleted_alias', sa.Column('alias_id', sa.Integer(), nullable=True))
25+
op.create_index('ix_domain_deleted_alias_alias_id', 'domain_deleted_alias', ['alias_id'], unique=False, postgresql_concurrently=True)
26+
27+
28+
def downgrade():
29+
with op.get_context().autocommit_block():
30+
op.drop_index('ix_domain_deleted_alias_alias_id', table_name='domain_deleted_alias', postgresql_concurrently=True)
31+
op.drop_column('domain_deleted_alias', 'alias_id')
32+
op.drop_index(op.f('ix_deleted_alias_alias_id'), table_name='deleted_alias', postgresql_concurrently=True)
33+
op.drop_column('deleted_alias', 'alias_id')
34+

tests/test_alias_delete.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ def ensure_alias_is_deleted(
9393
deleted_alias: Optional[DeletedAlias] = DeletedAlias.get_by(email=alias_email)
9494
assert deleted_alias is not None
9595
assert deleted_alias.reason == reason
96+
assert deleted_alias.alias_id == alias_id
9697

9798

9899
# Delete alias
@@ -158,6 +159,7 @@ def test_alias_custom_domain_perform_deletion_moves_to_domain_deleted_alias():
158159

159160
deleted_custom_alias = DomainDeletedAlias.get_by(email=alias_email)
160161
assert deleted_custom_alias is not None
162+
assert deleted_custom_alias.alias_id == alias_id
161163

162164

163165
# move_alias_to_trash

0 commit comments

Comments
 (0)