diff --git a/engine/apps/alerts/migrations/0043_remove_alertgroup_alerts_aler_channel_81aeec_idx_and_more.py b/engine/apps/alerts/migrations/0043_remove_alertgroup_alerts_aler_channel_81aeec_idx_and_more.py new file mode 100644 index 00000000..087d1322 --- /dev/null +++ b/engine/apps/alerts/migrations/0043_remove_alertgroup_alerts_aler_channel_81aeec_idx_and_more.py @@ -0,0 +1,21 @@ +# Generated by Django 4.2.7 on 2023-12-06 13:03 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('alerts', '0042_alertgroup_received_at'), + ] + + operations = [ + migrations.AddIndex( + model_name='alertgroup', + index=models.Index(fields=['channel_id', 'resolved', 'acknowledged', 'silenced', 'root_alert_group_id', 'started_at'], name='alert_group_list_index'), + ), + migrations.RemoveIndex( + model_name='alertgroup', + name='alerts_aler_channel_81aeec_idx', + ), + ] diff --git a/engine/apps/alerts/models/alert_group.py b/engine/apps/alerts/models/alert_group.py index cb1036d0..5a891a44 100644 --- a/engine/apps/alerts/models/alert_group.py +++ b/engine/apps/alerts/models/alert_group.py @@ -457,7 +457,10 @@ class AlertGroup(AlertGroupSlackRenderingMixin, EscalationSnapshotMixin, models. "is_open_for_grouping", ] indexes = [ - models.Index(fields=["channel_id", "resolved", "acknowledged", "silenced", "root_alert_group_id"]), + models.Index( + fields=["channel_id", "resolved", "acknowledged", "silenced", "root_alert_group_id", "started_at"], + name="alert_group_list_index", + ), ] def __str__(self): diff --git a/engine/apps/api/views/alert_group.py b/engine/apps/api/views/alert_group.py index 860c7092..230e43e2 100644 --- a/engine/apps/api/views/alert_group.py +++ b/engine/apps/api/views/alert_group.py @@ -30,7 +30,7 @@ from apps.user_management.models import Team, User from common.api_helpers.exceptions import BadRequest from common.api_helpers.filters import NO_TEAM_VALUE, DateRangeFilterMixin, ModelFieldFilterMixin from common.api_helpers.mixins import PreviewTemplateMixin, PublicPrimaryKeyMixin, TeamFilteringMixin -from common.api_helpers.paginators import TwentyFiveCursorPaginator +from common.api_helpers.paginators import AlertGroupCursorPaginator def get_integration_queryset(request): @@ -309,7 +309,7 @@ class AlertGroupView( serializer_class = AlertGroupSerializer - pagination_class = TwentyFiveCursorPaginator + pagination_class = AlertGroupCursorPaginator filter_backends = [SearchFilter, AlertGroupFilterBackend] # search_fields = ["=public_primary_key", "=inside_organization_number", "web_title_cache"] diff --git a/engine/common/api_helpers/paginators.py b/engine/common/api_helpers/paginators.py index 1e1a2028..554c3497 100644 --- a/engine/common/api_helpers/paginators.py +++ b/engine/common/api_helpers/paginators.py @@ -80,6 +80,6 @@ class FifteenPageSizePaginator(PathPrefixedPagePagination): page_size = 15 -class TwentyFiveCursorPaginator(PathPrefixedCursorPagination): +class AlertGroupCursorPaginator(PathPrefixedCursorPagination): page_size = 25 - ordering = "-started_at" + ordering = "-started_at" # ordering by "-started_at", so it uses the right index (see AlertGroup.Meta.indexes)