Skip to content

Commit 424b8c6

Browse files
authored
Add UserUniqueLogin.ip_address_id column (#19122)
1 parent 7e78c7d commit 424b8c6

File tree

2 files changed

+49
-0
lines changed

2 files changed

+49
-0
lines changed

warehouse/accounts/models.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -512,6 +512,11 @@ class UserUniqueLogin(db.Model):
512512
)
513513
user: Mapped[User] = orm.relationship(back_populates="unique_logins")
514514

515+
ip_address_id: Mapped[int] = mapped_column(
516+
ForeignKey("ip_addresses.id", onupdate="CASCADE", ondelete="CASCADE"),
517+
nullable=True,
518+
index=True,
519+
)
515520
ip_address: Mapped[str] = mapped_column(String, nullable=False)
516521
created: Mapped[datetime_now]
517522
last_used: Mapped[datetime_now]
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
# SPDX-License-Identifier: Apache-2.0
2+
"""
3+
Add UserUniqueLogin.ip_address_id column
4+
5+
Revision ID: df52c3746740
6+
Revises: a25f3d5186a9
7+
Create Date: 2025-12-02 16:11:17.059400
8+
"""
9+
10+
import sqlalchemy as sa
11+
12+
from alembic import op
13+
14+
revision = "df52c3746740"
15+
down_revision = "a25f3d5186a9"
16+
17+
18+
def upgrade():
19+
op.add_column(
20+
"user_unique_logins", sa.Column("ip_address_id", sa.UUID(), nullable=True)
21+
)
22+
op.create_index(
23+
op.f("ix_user_unique_logins_ip_address_id"),
24+
"user_unique_logins",
25+
["ip_address_id"],
26+
unique=False,
27+
)
28+
op.create_foreign_key(
29+
None,
30+
"user_unique_logins",
31+
"ip_addresses",
32+
["ip_address_id"],
33+
["id"],
34+
onupdate="CASCADE",
35+
ondelete="CASCADE",
36+
)
37+
38+
39+
def downgrade():
40+
op.drop_constraint(None, "user_unique_logins", type_="foreignkey")
41+
op.drop_index(
42+
op.f("ix_user_unique_logins_ip_address_id"), table_name="user_unique_logins"
43+
)
44+
op.drop_column("user_unique_logins", "ip_address_id")

0 commit comments

Comments
 (0)