models: Add a unique index on UserProfile.api_key.

This prevents `get_user_profile_by_api_key` from doing a sequential
scan.

Doing this requires moving the generation of initial api_key values
into the column definition, so that even bare calls to
`UserProfile.objects.create` (e.g. from tests) call appropriately
generate a random initial value.
This commit is contained in:
Alex Vandiver
2023-05-18 15:21:21 +00:00
committed by Tim Abbott
parent 27bc36b7d6
commit c978bfaa32
4 changed files with 23 additions and 4 deletions

View File

@@ -20,6 +20,7 @@ rules:
- id: dont-import-models-in-migrations
patterns:
- pattern-not: from zerver.lib.redis_utils import get_redis_client
- pattern-not: from zerver.lib.utils import generate_api_key
- pattern-not: from zerver.models import filter_pattern_validator
- pattern-not: from zerver.models import url_template_validator
- pattern-not: from zerver.models import generate_email_token_for_stream