diff --git a/zerver/migrations/0528_realmauditlog_zerver_realmauditlog_user_activations_idx.py b/zerver/migrations/0528_realmauditlog_zerver_realmauditlog_user_activations_idx.py new file mode 100644 index 0000000000..2bbe6a6fb9 --- /dev/null +++ b/zerver/migrations/0528_realmauditlog_zerver_realmauditlog_user_activations_idx.py @@ -0,0 +1,26 @@ +from django.contrib.postgres.operations import AddIndexConcurrently +from django.db import migrations, models + + +class Migration(migrations.Migration): + atomic = False + + dependencies = [ + ("zerver", "0527_presencesequence"), + ] + + operations = [ + AddIndexConcurrently( + model_name="realmauditlog", + index=models.Index( + # event_type__in: + # AbstractRealmAuditLog.USER_CREATED, + # AbstractRealmAuditLog.USER_ACTIVATED, + # AbstractRealmAuditLog.USER_DEACTIVATED, + # AbstractRealmAuditLog.USER_REACTIVATED, + condition=models.Q(("event_type__in", [101, 102, 103, 104])), + fields=["modified_user", "event_time"], + name="zerver_realmauditlog_user_activations_idx", + ), + ), + ] diff --git a/zerver/models/realm_audit_logs.py b/zerver/models/realm_audit_logs.py index 01383be53f..32c010cee2 100644 --- a/zerver/models/realm_audit_logs.py +++ b/zerver/models/realm_audit_logs.py @@ -242,6 +242,19 @@ class RealmAuditLog(AbstractRealmAuditLog): ] ), ), + models.Index( + # Used in analytics/lib/counts.py for computing active users for realm_active_humans + name="zerver_realmauditlog_user_activations_idx", + fields=["modified_user", "event_time"], + condition=Q( + event_type__in=[ + AbstractRealmAuditLog.USER_CREATED, + AbstractRealmAuditLog.USER_ACTIVATED, + AbstractRealmAuditLog.USER_DEACTIVATED, + AbstractRealmAuditLog.USER_REACTIVATED, + ] + ), + ), ] @override