From 2182bce3967d0fc368a71ed878b0493a2a6823b0 Mon Sep 17 00:00:00 2001 From: peterschmidt85 Date: Sun, 21 Dec 2025 22:33:01 +0100 Subject: [PATCH] [Internal] Add an index for user email --- .../1aa9638ad963_added_email_index.py | 31 +++++++++++++++++++ src/dstack/_internal/server/models.py | 2 +- 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 src/dstack/_internal/server/migrations/versions/1aa9638ad963_added_email_index.py diff --git a/src/dstack/_internal/server/migrations/versions/1aa9638ad963_added_email_index.py b/src/dstack/_internal/server/migrations/versions/1aa9638ad963_added_email_index.py new file mode 100644 index 0000000000..3b5a9d8b5c --- /dev/null +++ b/src/dstack/_internal/server/migrations/versions/1aa9638ad963_added_email_index.py @@ -0,0 +1,31 @@ +"""Added email index + +Revision ID: 1aa9638ad963 +Revises: 22d74df9897e +Create Date: 2025-12-21 22:08:27.331645 + +""" + +from alembic import op + +# revision identifiers, used by Alembic. +revision = "1aa9638ad963" +down_revision = "22d74df9897e" +branch_labels = None +depends_on = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table("users", schema=None) as batch_op: + batch_op.create_index(batch_op.f("ix_users_email"), ["email"], unique=False) + + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table("users", schema=None) as batch_op: + batch_op.drop_index(batch_op.f("ix_users_email")) + + # ### end Alembic commands ### diff --git a/src/dstack/_internal/server/models.py b/src/dstack/_internal/server/models.py index 22a70eceb3..33cd689e44 100644 --- a/src/dstack/_internal/server/models.py +++ b/src/dstack/_internal/server/models.py @@ -201,7 +201,7 @@ class UserModel(BaseModel): ssh_private_key: Mapped[Optional[str]] = mapped_column(Text, nullable=True) ssh_public_key: Mapped[Optional[str]] = mapped_column(Text, nullable=True) - email: Mapped[Optional[str]] = mapped_column(String(200), nullable=True) + email: Mapped[Optional[str]] = mapped_column(String(200), nullable=True, index=True) projects_quota: Mapped[int] = mapped_column( Integer, default=settings.USER_PROJECT_DEFAULT_QUOTA