Browse Source

chore: Squash migration history and remove south compat (#26567)

This is a potentially breaking change for self-hosted instances as they
will need to update to 2021-06 before moving forward.

Squashing migrations helps speed up new environment setup and CI when
migrations are changed.

Simplify migrations by remove state/operations that is reverted within
the same migration. Django doesn't fully handle separate state/database
well in big squash migrations. Eliding those operations makes migrations
run.
Mark Story 3 years ago
parent
commit
e06263660e
3 changed files with 7753 additions and 110 deletions
  1. 8 0
      CHANGES
  2. 7745 0
      src/sentry/migrations/0001_squashed_0200_release_indices.py
  3. 0 110
      src/sentry/runner/commands/upgrade.py

+ 8 - 0
CHANGES

@@ -1,3 +1,11 @@
+21.7.1
+------
+
+### Breaking Change
+
+If you are upgrading from a release prior to 10.0.0 you need to first upgrade to 21.6.1 and run migrations.
+For more information [see the upgrade guide](https://develop.sentry.dev/self-hosted/#hard-stops).
+
 21.6.1
 ------
 

+ 7745 - 0
src/sentry/migrations/0001_squashed_0200_release_indices.py

@@ -0,0 +1,7745 @@
+# Generated by Django 1.11.29 on 2021-06-11 17:10
+
+import django.db.migrations.operations.special
+import django.db.models.deletion
+import django.db.models.manager
+import django.utils.timezone
+from django.conf import settings
+from django.db import migrations, models
+
+import bitfield.models
+import sentry.db.mixin
+import sentry.db.models.fields.array
+import sentry.db.models.fields.bounded
+import sentry.db.models.fields.citext
+import sentry.db.models.fields.encrypted
+import sentry.db.models.fields.foreignkey
+import sentry.db.models.fields.gzippeddict
+import sentry.db.models.fields.jsonfield
+import sentry.db.models.fields.node
+import sentry.db.models.fields.onetoone
+import sentry.db.models.fields.text
+import sentry.db.models.fields.uuid
+import sentry.models.apiapplication
+import sentry.models.apigrant
+import sentry.models.apitoken
+import sentry.models.broadcast
+import sentry.models.groupshare
+import sentry.models.scheduledeletion
+import sentry.models.sentryapp
+import sentry.models.sentryappinstallation
+import sentry.models.servicehook
+import sentry.models.user
+import sentry.models.useremail
+
+
+def add_my_issues_search(apps, schema_editor):
+    SavedSearch = apps.get_model("sentry", "SavedSearch")
+    SavedSearch.objects.create(
+        name="My Issues",
+        query="is:unresolved assigned_or_suggested:me",
+        organization_id=None,
+        is_default=False,
+        is_global=True,
+        # models.search_common.SearchType.ISSUE
+        type=0,
+        sort="date",
+    )
+
+
+# Functions from the following migrations need manual copying.
+# Move them and any dependencies into this file, then update the
+# RunPython operations to refer to the local versions:
+
+
+class Migration(migrations.Migration):
+    # This flag is used to mark that a migration shouldn't be automatically run in
+    # production. We set this to True for operations that we think are risky and want
+    # someone from ops to run manually and monitor.
+    # General advice is that if in doubt, mark your migration as `is_dangerous`.
+    # Some things you should always mark as dangerous:
+    # - Large data migrations. Typically we want these to be run manually by ops so that
+    #   they can be monitored. Since data migrations will now hold a transaction open
+    #   this is even more important.
+    # - Adding columns to highly active tables, even ones that are NULL.
+    is_dangerous = False
+
+    # This flag is used to decide whether to run this migration in a transaction or not.
+    # By default we prefer to run in a transaction, but for migrations where you want
+    # to `CREATE INDEX CONCURRENTLY` this needs to be set to False. Typically you'll
+    # want to create an index concurrently when adding one to an existing table.
+    # You'll also usually want to set this to `False` if you're writing a data
+    # migration, since we don't want the entire migration to run in one long-running
+    # transaction.
+    atomic = False
+
+    replaces = [
+        ("sentry", "0001_initial"),
+        ("sentry", "0002_912_to_recent"),
+        ("sentry", "0003_auto_20191022_0122"),
+        (
+            "sentry",
+            "0004_bitfieldtestmodel_blankjsonfieldtestmodel_callabledefaultmodel_jsonfieldtestmodel_jsonfieldwithdefau",
+        ),
+        ("sentry", "0005_fix_content_types"),
+        ("sentry", "0006_sentryapp_date_published"),
+        ("sentry", "0007_auto_20191029_0131"),
+        ("sentry", "0008_auto_20191030_0016"),
+        ("sentry", "0009_auto_20191101_1608"),
+        ("sentry", "0010_auto_20191104_1641"),
+        ("sentry", "0011_remove_pagerdutyservice_service_id_from_state"),
+        ("sentry", "0012_remove_pagerdutyservice_service_id"),
+        ("sentry", "0013_auto_20191111_1829"),
+        ("sentry", "0014_delete_sentryappwebhookerror"),
+        ("sentry", "0015_delete_sentryappwebhookerror_db"),
+        ("sentry", "0016_delete_alert_rule_deprecated_fields"),
+        ("sentry", "0017_incident_aggregation"),
+        ("sentry", "0018_discoversavedquery_version"),
+        ("sentry", "0019_auto_20191114_2040"),
+        ("sentry", "0020_auto_20191125_1420"),
+        ("sentry", "0021_auto_20191203_1803"),
+        ("sentry", "0021_auto_20191202_1716"),
+        ("sentry", "0022_merge"),
+        ("sentry", "0023_hide_environment_none_20191126"),
+        ("sentry", "0024_auto_20191230_2052"),
+        ("sentry", "0025_organizationaccessrequest_requester"),
+        ("sentry", "0026_delete_event"),
+        ("sentry", "0027_exporteddata"),
+        ("sentry", "0028_user_reports"),
+        ("sentry", "0029_discover_query_upgrade"),
+        ("sentry", "0030_auto_20200201_0039"),
+        ("sentry", "0031_delete_alert_rules_and_incidents"),
+        ("sentry", "0032_delete_alert_email"),
+        ("sentry", "0033_auto_20200210_2137"),
+        ("sentry", "0034_auto_20200210_2311"),
+        ("sentry", "0035_auto_20200127_1711"),
+        ("sentry", "0036_auto_20200213_0106"),
+        ("sentry", "0037_auto_20200213_0140"),
+        ("sentry", "0038_auto_20200213_1904"),
+        ("sentry", "0039_delete_incidentsuspectcommit"),
+        ("sentry", "0040_remove_incidentsuspectcommittable"),
+        ("sentry", "0041_incidenttrigger_date_modified"),
+        ("sentry", "0042_auto_20200214_1607"),
+        ("sentry", "0043_auto_20200218_1903"),
+        ("sentry", "0044_auto_20200219_0018"),
+        ("sentry", "0045_remove_incidentactivity_event_stats_snapshot"),
+        ("sentry", "0046_auto_20200221_1735"),
+        ("sentry", "0047_auto_20200224_2319"),
+        ("sentry", "0048_auto_20200302_1825"),
+        ("sentry", "0049_auto_20200304_0254"),
+        ("sentry", "0050_auto_20200306_2346"),
+        ("sentry", "0051_fix_auditlog_pickled_data"),
+        ("sentry", "0052_organizationonboardingtask_completion_seen"),
+        ("sentry", "0053_migrate_alert_task_onboarding"),
+        ("sentry", "0054_create_key_transaction"),
+        ("sentry", "0055_query_subscription_status"),
+        ("sentry", "0056_remove_old_functions"),
+        ("sentry", "0057_remove_unused_project_flag"),
+        ("sentry", "0058_project_issue_alerts_targeting"),
+        ("sentry", "0059_add_new_sentry_app_features"),
+        ("sentry", "0060_add_file_eventattachment_index"),
+        ("sentry", "0061_alertrule_partial_index"),
+        ("sentry", "0062_key_transactions_unique_with_owner"),
+        ("sentry", "0063_drop_alertrule_constraint"),
+        ("sentry", "0064_project_has_transactions"),
+        ("sentry", "0065_add_incident_status_method"),
+        ("sentry", "0066_alertrule_manager"),
+        ("sentry", "0067_migrate_rules_alert_targeting"),
+        ("sentry", "0068_project_default_flags"),
+        ("sentry", "0069_remove_tracked_superusers"),
+        ("sentry", "0070_incident_snapshot_support"),
+        ("sentry", "0071_add_default_fields_model_subclass"),
+        ("sentry", "0072_alert_rules_query_changes"),
+        ("sentry", "0073_migrate_alert_query_model"),
+        ("sentry", "0074_add_metric_alert_feature"),
+        ("sentry", "0075_metric_alerts_fix_releases"),
+        ("sentry", "0076_alert_rules_disable_constraints"),
+        ("sentry", "0077_alert_query_col_drop_state"),
+        ("sentry", "0078_incident_field_updates"),
+        ("sentry", "0079_incidents_remove_query_field_state"),
+        ("sentry", "0080_alert_rules_drop_unused_tables_cols"),
+        ("sentry", "0081_add_integraiton_upgrade_audit_log"),
+        ("sentry", "0082_alert_rules_threshold_float"),
+        ("sentry", "0083_add_max_length_webhook_url"),
+        ("sentry", "0084_exported_data_blobs"),
+        ("sentry", "0085_fix_error_rate_snuba_query"),
+        ("sentry", "0086_sentry_app_installation_for_provider"),
+        ("sentry", "0087_fix_time_series_data_type"),
+        ("sentry", "0088_rule_level_resolve_threshold_type"),
+        ("sentry", "0089_rule_level_fields_backfill"),
+        ("sentry", "0090_fix_auditlog_pickled_data_take_2"),
+        ("sentry", "0091_alertruleactivity"),
+        ("sentry", "0092_remove_trigger_threshold_type_nullable"),
+        ("sentry", "0093_make_identity_user_id_textfield"),
+        ("sentry", "0094_cleanup_unreferenced_event_files"),
+        ("sentry", "0095_ruleactivity"),
+        ("sentry", "0096_sentry_app_component_skip_load_on_open"),
+        ("sentry", "0097_add_sentry_app_id_to_sentry_alertruletriggeraction"),
+        ("sentry", "0098_add-performance-onboarding"),
+        ("sentry", "0099_fix_project_platforms"),
+        ("sentry", "0100_file_type_on_event_attachment"),
+        ("sentry", "0101_backfill_file_type_on_event_attachment"),
+        ("sentry", "0102_collect_relay_analytics"),
+        ("sentry", "0103_project_has_alert_filters"),
+        ("sentry", "0104_collect_relay_public_key_usage"),
+        ("sentry", "0105_remove_nullability_of_event_attachment_type"),
+        ("sentry", "0106_service_hook_project_id_nullable"),
+        ("sentry", "0107_remove_spaces_from_slugs"),
+        ("sentry", "0108_update_fileblob_action"),
+        ("sentry", "0109_sentry_app_creator"),
+        ("sentry", "0110_sentry_app_creator_backill"),
+        ("sentry", "0111_snuba_query_event_type"),
+        ("sentry", "0112_groupinboxmodel"),
+        ("sentry", "0113_add_repositoryprojectpathconfig"),
+        ("sentry", "0114_add_unhandled_savedsearch"),
+        ("sentry", "0115_add_checksum_to_debug_file"),
+        ("sentry", "0116_backfill_debug_file_checksum"),
+        ("sentry", "0117_dummy-activityupdate"),
+        ("sentry", "0118_backfill_snuba_query_event_types"),
+        ("sentry", "0119_fix_set_none"),
+        ("sentry", "0120_commit_author_charfield"),
+        ("sentry", "0121_obliterate_group_inbox"),
+        ("sentry", "0122_add_release_status"),
+        ("sentry", "0123_groupinbox_addprojandorg"),
+        ("sentry", "0124_add_release_status_model"),
+        ("sentry", "0125_add_platformexternalissue_project_id"),
+        ("sentry", "0126_make_platformexternalissue_group_id_flexfk"),
+        ("sentry", "0127_backfill_platformexternalissue_project_id"),
+        ("sentry", "0128_change_dashboards"),
+        ("sentry", "0129_remove_dashboard_keys"),
+        ("sentry", "0130_remove_old_widget_models"),
+        ("sentry", "0131_drop_widget_tables"),
+        ("sentry", "0132_groupownermodel"),
+        ("sentry", "0133_dashboard_delete_object_status"),
+        ("sentry", "0134_dashboard_drop_object_status_column"),
+        ("sentry", "0135_removinguniquegroupownerconstraint"),
+        ("sentry", "0136_issue_alert_filter_all_orgs"),
+        ("sentry", "0137_dashboard_widget_interval"),
+        ("sentry", "0138_widget_query_remove_interval"),
+        ("sentry", "0139_remove_widgetquery_interval"),
+        ("sentry", "0140_subscription_checker"),
+        ("sentry", "0141_remove_widget_constraints"),
+        ("sentry", "0142_add_dashboard_tombstone"),
+        ("sentry", "0143_add_alerts_integrationfeature"),
+        ("sentry", "0144_add_publish_request_inprogress_status"),
+        ("sentry", "0145_rename_alert_rule_feature"),
+        ("sentry", "0146_backfill_members_alert_write"),
+        ("sentry", "0147_add_groupinbox_date_added_index"),
+        ("sentry", "0148_group_id_bigint"),
+        ("sentry", "0149_bigint"),
+        ("sentry", "0150_remove_userreport_eventattachment_constraints"),
+        ("sentry", "0151_add_world_map_dashboard_widget_type"),
+        ("sentry", "0152_remove_slack_workspace_orgintegrations"),
+        ("sentry", "0153_add_big_number_dashboard_widget_type"),
+        ("sentry", "0154_groupedmessage_inbox_sort"),
+        ("sentry", "0155_add_dashboard_query_orderby"),
+        ("sentry", "0156_add_mark_reviewed_activity"),
+        ("sentry", "0157_make_repositoryprojectpathconfig_organization_integration_nullable"),
+        ("sentry", "0158_create_externalteam_table"),
+        ("sentry", "0159_create_externaluser_table"),
+        ("sentry", "0160_create_projectcodeowners_table"),
+        ("sentry", "0161_add_saved_search_sort"),
+        ("sentry", "0162_backfill_saved_search_sort"),
+        ("sentry", "0163_add_organizationmember_and_external_name"),
+        ("sentry", "0164_add_protect_on_delete_codeowners"),
+        ("sentry", "0165_metric_alerts_fix_group_ids"),
+        ("sentry", "0166_create_notificationsetting_table"),
+        ("sentry", "0167_rm_organization_integration_from_projectcodeowners"),
+        ("sentry", "0168_demo_orgs_users"),
+        ("sentry", "0169_delete_organization_integration_from_projectcodeowners"),
+        ("sentry", "0170_actor_introduction"),
+        ("sentry", "0171_backfill_actors"),
+        ("sentry", "0172_rule_owner_fields"),
+        ("sentry", "0173_remove_demo_flag"),
+        ("sentry", "0174_my_issues_saved_search"),
+        ("sentry", "0175_make_targets_nullable"),
+        ("sentry", "0176_remove_targets"),
+        ("sentry", "0177_drop_targets"),
+        ("sentry", "0178_add_new_target_column"),
+        ("sentry", "0179_update_legacy_discover_saved_query_timestamps"),
+        ("sentry", "0180_add_saved_search_sorts"),
+        ("sentry", "0181_copy_useroptions_to_notificationsettings"),
+        ("sentry", "0182_update_user_misery_on_saved_queries"),
+        ("sentry", "0183_make_codemapping_unique_on_projectcodeowners"),
+        ("sentry", "0184_copy_useroptions_to_notificationsettings_2"),
+        ("sentry", "0185_rm_copied_useroptions"),
+        ("sentry", "0186_add_externalactor"),
+        ("sentry", "0187_backfill_me_or_none"),
+        ("sentry", "0188_remove_externalteam_externaluser_fk_constraints"),
+        ("sentry", "0189_remove_externaluser_externalteam_models"),
+        ("sentry", "0190_drop_external_user_table"),
+        ("sentry", "0191_make_externalactor_integration_id_not_null"),
+        ("sentry", "0192_remove_fileblobowner_org_fk"),
+        ("sentry", "0193_grouprelease_indexes"),
+        ("sentry", "0194_add_custom_scm_provider"),
+        ("sentry", "0195_add_team_key_transactions"),
+        ("sentry", "0196_add_restricted_member_limit"),
+        ("sentry", "0197_add_scim_enabled_boolean"),
+        ("sentry", "0198_add_project_transaction_threshold"),
+        ("sentry", "0199_release_semver"),
+        ("sentry", "0200_release_indices"),
+    ]
+
+    initial = True
+
+    dependencies = []
+
+    operations = [
+        migrations.CreateModel(
+            name="User",
+            fields=[
+                ("password", models.CharField(max_length=128)),
+                ("last_login", models.DateTimeField(blank=True, null=True)),
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("username", models.CharField(max_length=128, unique=True)),
+                ("name", models.CharField(blank=True, db_column="first_name", max_length=200)),
+                ("email", models.EmailField(blank=True, max_length=75)),
+                ("is_staff", models.BooleanField(default=False)),
+                ("is_active", models.BooleanField(default=True)),
+                ("is_superuser", models.BooleanField(default=False)),
+                ("is_managed", models.BooleanField(default=False)),
+                ("is_sentry_app", models.NullBooleanField(default=None)),
+                ("is_password_expired", models.BooleanField(default=False)),
+                ("last_password_change", models.DateTimeField(null=True)),
+                (
+                    "flags",
+                    bitfield.models.BitField(
+                        (
+                            (
+                                "newsletter_consent_prompt",
+                                "Do we need to ask this user for newsletter consent?",
+                            ),
+                        ),
+                        default=0,
+                        null=True,
+                    ),
+                ),
+                ("session_nonce", models.CharField(max_length=12, null=True)),
+                ("date_joined", models.DateTimeField(default=django.utils.timezone.now)),
+                ("last_active", models.DateTimeField(default=django.utils.timezone.now, null=True)),
+            ],
+            options={
+                "db_table": "auth_user",
+                "verbose_name": "user",
+                "verbose_name_plural": "users",
+            },
+            managers=[
+                ("objects", sentry.models.user.UserManager(cache_fields=["pk"])),
+            ],
+        ),
+        migrations.CreateModel(
+            name="Activity",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("type", sentry.db.models.fields.bounded.BoundedPositiveIntegerField()),
+                ("ident", models.CharField(max_length=64, null=True)),
+                ("datetime", models.DateTimeField(default=django.utils.timezone.now)),
+                ("data", sentry.db.models.fields.gzippeddict.GzippedDictField(null=True)),
+            ],
+            options={
+                "db_table": "sentry_activity",
+            },
+        ),
+        migrations.CreateModel(
+            name="ApiApplication",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                (
+                    "client_id",
+                    models.CharField(
+                        default=sentry.models.apiapplication.generate_token,
+                        max_length=64,
+                        unique=True,
+                    ),
+                ),
+                (
+                    "client_secret",
+                    sentry.db.models.fields.encrypted.EncryptedTextField(
+                        default=sentry.models.apiapplication.generate_token
+                    ),
+                ),
+                (
+                    "name",
+                    models.CharField(
+                        blank=True,
+                        default=sentry.models.apiapplication.generate_name,
+                        max_length=64,
+                    ),
+                ),
+                (
+                    "status",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
+                        db_index=True, default=0
+                    ),
+                ),
+                ("allowed_origins", models.TextField(blank=True, null=True)),
+                ("redirect_uris", models.TextField()),
+                ("homepage_url", models.URLField(null=True)),
+                ("privacy_url", models.URLField(null=True)),
+                ("terms_url", models.URLField(null=True)),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+                (
+                    "owner",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_apiapplication",
+            },
+        ),
+        migrations.CreateModel(
+            name="ApiAuthorization",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                (
+                    "scopes",
+                    bitfield.models.BitField(
+                        (
+                            ("project:read", "project:read"),
+                            ("project:write", "project:write"),
+                            ("project:admin", "project:admin"),
+                            ("project:releases", "project:releases"),
+                            ("team:read", "team:read"),
+                            ("team:write", "team:write"),
+                            ("team:admin", "team:admin"),
+                            ("event:read", "event:read"),
+                            ("event:write", "event:write"),
+                            ("event:admin", "event:admin"),
+                            ("org:read", "org:read"),
+                            ("org:write", "org:write"),
+                            ("org:admin", "org:admin"),
+                            ("member:read", "member:read"),
+                            ("member:write", "member:write"),
+                            ("member:admin", "member:admin"),
+                        ),
+                        default=None,
+                    ),
+                ),
+                ("scope_list", sentry.db.models.fields.array.ArrayField(null=True)),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+                (
+                    "application",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        null=True,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to="sentry.ApiApplication",
+                    ),
+                ),
+                (
+                    "user",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_apiauthorization",
+            },
+        ),
+        migrations.CreateModel(
+            name="ApiGrant",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                (
+                    "code",
+                    models.CharField(
+                        db_index=True, default=sentry.models.apigrant.generate_code, max_length=64
+                    ),
+                ),
+                (
+                    "expires_at",
+                    models.DateTimeField(
+                        db_index=True, default=sentry.models.apigrant.default_expiration
+                    ),
+                ),
+                ("redirect_uri", models.CharField(max_length=255)),
+                (
+                    "scopes",
+                    bitfield.models.BitField(
+                        (
+                            ("project:read", "project:read"),
+                            ("project:write", "project:write"),
+                            ("project:admin", "project:admin"),
+                            ("project:releases", "project:releases"),
+                            ("team:read", "team:read"),
+                            ("team:write", "team:write"),
+                            ("team:admin", "team:admin"),
+                            ("event:read", "event:read"),
+                            ("event:write", "event:write"),
+                            ("event:admin", "event:admin"),
+                            ("org:read", "org:read"),
+                            ("org:write", "org:write"),
+                            ("org:admin", "org:admin"),
+                            ("member:read", "member:read"),
+                            ("member:write", "member:write"),
+                            ("member:admin", "member:admin"),
+                        ),
+                        default=None,
+                    ),
+                ),
+                ("scope_list", sentry.db.models.fields.array.ArrayField(null=True)),
+                (
+                    "application",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.ApiApplication"
+                    ),
+                ),
+                (
+                    "user",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_apigrant",
+            },
+        ),
+        migrations.CreateModel(
+            name="ApiKey",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("label", models.CharField(blank=True, default="Default", max_length=64)),
+                ("key", models.CharField(max_length=32, unique=True)),
+                (
+                    "scopes",
+                    bitfield.models.BitField(
+                        (
+                            ("project:read", "project:read"),
+                            ("project:write", "project:write"),
+                            ("project:admin", "project:admin"),
+                            ("project:releases", "project:releases"),
+                            ("team:read", "team:read"),
+                            ("team:write", "team:write"),
+                            ("team:admin", "team:admin"),
+                            ("event:read", "event:read"),
+                            ("event:write", "event:write"),
+                            ("event:admin", "event:admin"),
+                            ("org:read", "org:read"),
+                            ("org:write", "org:write"),
+                            ("org:admin", "org:admin"),
+                            ("member:read", "member:read"),
+                            ("member:write", "member:write"),
+                            ("member:admin", "member:admin"),
+                        ),
+                        default=None,
+                    ),
+                ),
+                ("scope_list", sentry.db.models.fields.array.ArrayField(null=True)),
+                (
+                    "status",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
+                        db_index=True, default=0
+                    ),
+                ),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+                ("allowed_origins", models.TextField(blank=True, null=True)),
+            ],
+            options={
+                "db_table": "sentry_apikey",
+            },
+        ),
+        migrations.CreateModel(
+            name="ApiToken",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                (
+                    "scopes",
+                    bitfield.models.BitField(
+                        (
+                            ("project:read", "project:read"),
+                            ("project:write", "project:write"),
+                            ("project:admin", "project:admin"),
+                            ("project:releases", "project:releases"),
+                            ("team:read", "team:read"),
+                            ("team:write", "team:write"),
+                            ("team:admin", "team:admin"),
+                            ("event:read", "event:read"),
+                            ("event:write", "event:write"),
+                            ("event:admin", "event:admin"),
+                            ("org:read", "org:read"),
+                            ("org:write", "org:write"),
+                            ("org:admin", "org:admin"),
+                            ("member:read", "member:read"),
+                            ("member:write", "member:write"),
+                            ("member:admin", "member:admin"),
+                        ),
+                        default=None,
+                    ),
+                ),
+                ("scope_list", sentry.db.models.fields.array.ArrayField(null=True)),
+                (
+                    "token",
+                    models.CharField(
+                        default=sentry.models.apitoken.generate_token, max_length=64, unique=True
+                    ),
+                ),
+                (
+                    "refresh_token",
+                    models.CharField(
+                        default=sentry.models.apitoken.generate_token,
+                        max_length=64,
+                        null=True,
+                        unique=True,
+                    ),
+                ),
+                (
+                    "expires_at",
+                    models.DateTimeField(
+                        default=sentry.models.apitoken.default_expiration, null=True
+                    ),
+                ),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+                (
+                    "application",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        null=True,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to="sentry.ApiApplication",
+                    ),
+                ),
+                (
+                    "user",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_apitoken",
+            },
+        ),
+        migrations.CreateModel(
+            name="AssistantActivity",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("guide_id", sentry.db.models.fields.bounded.BoundedPositiveIntegerField()),
+                ("viewed_ts", models.DateTimeField(null=True)),
+                ("dismissed_ts", models.DateTimeField(null=True)),
+                ("useful", models.NullBooleanField()),
+                (
+                    "user",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_assistant_activity",
+            },
+        ),
+        migrations.CreateModel(
+            name="AuditLogEntry",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("actor_label", models.CharField(blank=True, max_length=64, null=True)),
+                (
+                    "target_object",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(null=True),
+                ),
+                ("event", sentry.db.models.fields.bounded.BoundedPositiveIntegerField()),
+                ("ip_address", models.GenericIPAddressField(null=True, unpack_ipv4=True)),
+                ("data", sentry.db.models.fields.gzippeddict.GzippedDictField()),
+                ("datetime", models.DateTimeField(default=django.utils.timezone.now)),
+                (
+                    "actor",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        blank=True,
+                        null=True,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        related_name="audit_actors",
+                        to=settings.AUTH_USER_MODEL,
+                    ),
+                ),
+                (
+                    "actor_key",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        blank=True,
+                        null=True,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to="sentry.ApiKey",
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_auditlogentry",
+            },
+        ),
+        migrations.CreateModel(
+            name="Authenticator",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("created_at", models.DateTimeField(default=django.utils.timezone.now)),
+                ("last_used_at", models.DateTimeField(null=True)),
+                ("type", sentry.db.models.fields.bounded.BoundedPositiveIntegerField()),
+                (
+                    "config",
+                    sentry.db.models.fields.encrypted.EncryptedPickledObjectField(editable=False),
+                ),
+                (
+                    "user",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "auth_authenticator",
+                "verbose_name": "authenticator",
+                "verbose_name_plural": "authenticators",
+            },
+        ),
+        migrations.CreateModel(
+            name="AuthIdentity",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("ident", models.CharField(max_length=128)),
+                ("data", sentry.db.models.fields.encrypted.EncryptedJsonField(default=dict)),
+                ("last_verified", models.DateTimeField(default=django.utils.timezone.now)),
+                ("last_synced", models.DateTimeField(default=django.utils.timezone.now)),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+            ],
+            options={
+                "db_table": "sentry_authidentity",
+            },
+        ),
+        migrations.CreateModel(
+            name="AuthProvider",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("provider", models.CharField(max_length=128)),
+                ("config", sentry.db.models.fields.encrypted.EncryptedJsonField(default=dict)),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+                (
+                    "sync_time",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(null=True),
+                ),
+                ("last_sync", models.DateTimeField(null=True)),
+                (
+                    "default_role",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(default=50),
+                ),
+                ("default_global_access", models.BooleanField(default=True)),
+                (
+                    "flags",
+                    bitfield.models.BitField(
+                        (
+                            (
+                                "allow_unlinked",
+                                "Grant access to members who have not linked SSO accounts.",
+                            ),
+                        ),
+                        default=0,
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_authprovider",
+            },
+        ),
+        migrations.CreateModel(
+            name="Broadcast",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("upstream_id", models.CharField(blank=True, max_length=32, null=True)),
+                ("title", models.CharField(max_length=32)),
+                ("message", models.CharField(max_length=256)),
+                ("link", models.URLField(blank=True, null=True)),
+                ("is_active", models.BooleanField(db_index=True, default=True)),
+                (
+                    "date_expires",
+                    models.DateTimeField(
+                        blank=True, default=sentry.models.broadcast.default_expiration, null=True
+                    ),
+                ),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+            ],
+            options={
+                "db_table": "sentry_broadcast",
+            },
+        ),
+        migrations.CreateModel(
+            name="BroadcastSeen",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("date_seen", models.DateTimeField(default=django.utils.timezone.now)),
+                (
+                    "broadcast",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Broadcast"
+                    ),
+                ),
+                (
+                    "user",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_broadcastseen",
+            },
+        ),
+        migrations.CreateModel(
+            name="Commit",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                (
+                    "organization_id",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(db_index=True),
+                ),
+                ("repository_id", sentry.db.models.fields.bounded.BoundedPositiveIntegerField()),
+                ("key", models.CharField(max_length=64)),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+                ("message", models.TextField(null=True)),
+            ],
+            options={
+                "db_table": "sentry_commit",
+            },
+        ),
+        migrations.CreateModel(
+            name="CommitAuthor",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                (
+                    "organization_id",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(db_index=True),
+                ),
+                ("name", models.CharField(max_length=128, null=True)),
+                ("email", models.EmailField(max_length=75)),
+                ("external_id", models.CharField(max_length=164, null=True)),
+            ],
+            options={
+                "db_table": "sentry_commitauthor",
+            },
+        ),
+        migrations.CreateModel(
+            name="CommitFileChange",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                (
+                    "organization_id",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(db_index=True),
+                ),
+                ("filename", models.TextField()),
+                ("type", models.CharField(max_length=1)),
+                (
+                    "commit",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Commit"
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_commitfilechange",
+            },
+        ),
+        migrations.CreateModel(
+            name="Counter",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("value", sentry.db.models.fields.bounded.BoundedBigIntegerField()),
+            ],
+            options={
+                "db_table": "sentry_projectcounter",
+            },
+        ),
+        migrations.CreateModel(
+            name="Dashboard",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("title", models.CharField(max_length=255)),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+                ("status", sentry.db.models.fields.bounded.BoundedPositiveIntegerField(default=0)),
+                (
+                    "created_by",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_dashboard",
+            },
+        ),
+        migrations.CreateModel(
+            name="DeletedOrganization",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("actor_label", models.CharField(max_length=64, null=True)),
+                ("actor_id", sentry.db.models.fields.bounded.BoundedBigIntegerField(null=True)),
+                ("actor_key", models.CharField(max_length=32, null=True)),
+                ("ip_address", models.GenericIPAddressField(null=True, unpack_ipv4=True)),
+                ("date_deleted", models.DateTimeField(default=django.utils.timezone.now)),
+                ("date_created", models.DateTimeField(null=True)),
+                ("reason", models.TextField(blank=True, null=True)),
+                ("name", models.CharField(max_length=64, null=True)),
+                ("slug", models.CharField(max_length=50, null=True)),
+            ],
+            options={
+                "db_table": "sentry_deletedorganization",
+            },
+        ),
+        migrations.CreateModel(
+            name="DeletedProject",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("actor_label", models.CharField(max_length=64, null=True)),
+                ("actor_id", sentry.db.models.fields.bounded.BoundedBigIntegerField(null=True)),
+                ("actor_key", models.CharField(max_length=32, null=True)),
+                ("ip_address", models.GenericIPAddressField(null=True, unpack_ipv4=True)),
+                ("date_deleted", models.DateTimeField(default=django.utils.timezone.now)),
+                ("date_created", models.DateTimeField(null=True)),
+                ("reason", models.TextField(blank=True, null=True)),
+                ("slug", models.CharField(max_length=50, null=True)),
+                ("name", models.CharField(max_length=200, null=True)),
+                (
+                    "organization_id",
+                    sentry.db.models.fields.bounded.BoundedBigIntegerField(null=True),
+                ),
+                ("organization_name", models.CharField(max_length=64, null=True)),
+                ("organization_slug", models.CharField(max_length=50, null=True)),
+                ("platform", models.CharField(max_length=64, null=True)),
+            ],
+            options={
+                "db_table": "sentry_deletedproject",
+            },
+        ),
+        migrations.CreateModel(
+            name="DeletedTeam",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("actor_label", models.CharField(max_length=64, null=True)),
+                ("actor_id", sentry.db.models.fields.bounded.BoundedBigIntegerField(null=True)),
+                ("actor_key", models.CharField(max_length=32, null=True)),
+                ("ip_address", models.GenericIPAddressField(null=True, unpack_ipv4=True)),
+                ("date_deleted", models.DateTimeField(default=django.utils.timezone.now)),
+                ("date_created", models.DateTimeField(null=True)),
+                ("reason", models.TextField(blank=True, null=True)),
+                ("name", models.CharField(max_length=64, null=True)),
+                ("slug", models.CharField(max_length=50, null=True)),
+                (
+                    "organization_id",
+                    sentry.db.models.fields.bounded.BoundedBigIntegerField(null=True),
+                ),
+                ("organization_name", models.CharField(max_length=64, null=True)),
+                ("organization_slug", models.CharField(max_length=50, null=True)),
+            ],
+            options={
+                "db_table": "sentry_deletedteam",
+            },
+        ),
+        migrations.CreateModel(
+            name="Deploy",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                (
+                    "organization_id",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(db_index=True),
+                ),
+                (
+                    "environment_id",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(db_index=True),
+                ),
+                ("date_finished", models.DateTimeField(default=django.utils.timezone.now)),
+                ("date_started", models.DateTimeField(blank=True, null=True)),
+                ("name", models.CharField(blank=True, max_length=64, null=True)),
+                ("url", models.URLField(blank=True, null=True)),
+                ("notified", models.NullBooleanField(db_index=True, default=False)),
+            ],
+            options={
+                "db_table": "sentry_deploy",
+            },
+        ),
+        migrations.CreateModel(
+            name="DiscoverSavedQuery",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("name", models.CharField(max_length=255)),
+                ("query", sentry.db.models.fields.jsonfield.JSONField(default=dict)),
+                ("date_created", models.DateTimeField(auto_now_add=True)),
+                ("date_updated", models.DateTimeField(auto_now=True)),
+                (
+                    "created_by",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        null=True,
+                        on_delete=django.db.models.deletion.SET_NULL,
+                        to=settings.AUTH_USER_MODEL,
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_discoversavedquery",
+            },
+        ),
+        migrations.CreateModel(
+            name="DiscoverSavedQueryProject",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                (
+                    "discover_saved_query",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.DiscoverSavedQuery"
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_discoversavedqueryproject",
+            },
+        ),
+        migrations.CreateModel(
+            name="Distribution",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                (
+                    "organization_id",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(db_index=True),
+                ),
+                ("name", models.CharField(max_length=64)),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+            ],
+            options={
+                "db_table": "sentry_distribution",
+            },
+        ),
+        migrations.CreateModel(
+            name="Email",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("email", sentry.db.models.fields.citext.CIEmailField(max_length=75, unique=True)),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+            ],
+            options={
+                "db_table": "sentry_email",
+            },
+        ),
+        migrations.CreateModel(
+            name="Environment",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("organization_id", sentry.db.models.fields.bounded.BoundedPositiveIntegerField()),
+                (
+                    "project_id",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(null=True),
+                ),
+                ("name", models.CharField(max_length=64)),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+            ],
+            options={
+                "db_table": "sentry_environment",
+            },
+        ),
+        migrations.CreateModel(
+            name="EnvironmentProject",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("is_hidden", models.NullBooleanField()),
+                (
+                    "environment",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Environment"
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_environmentproject",
+            },
+        ),
+        migrations.CreateModel(
+            name="EventAttachment",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("project_id", sentry.db.models.fields.bounded.BoundedBigIntegerField()),
+                (
+                    "group_id",
+                    sentry.db.models.fields.bounded.BoundedBigIntegerField(
+                        db_index=True, null=True
+                    ),
+                ),
+                ("event_id", models.CharField(db_index=True, max_length=32)),
+                ("name", models.TextField()),
+                (
+                    "date_added",
+                    models.DateTimeField(db_index=True, default=django.utils.timezone.now),
+                ),
+            ],
+            options={
+                "db_table": "sentry_eventattachment",
+            },
+        ),
+        migrations.CreateModel(
+            name="EventProcessingIssue",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_eventprocessingissue",
+            },
+        ),
+        migrations.CreateModel(
+            name="EventUser",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                (
+                    "project_id",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(db_index=True),
+                ),
+                ("hash", models.CharField(max_length=32)),
+                ("ident", models.CharField(max_length=128, null=True)),
+                ("email", models.EmailField(max_length=75, null=True)),
+                ("username", models.CharField(max_length=128, null=True)),
+                ("name", models.CharField(max_length=128, null=True)),
+                ("ip_address", models.GenericIPAddressField(null=True)),
+                (
+                    "date_added",
+                    models.DateTimeField(db_index=True, default=django.utils.timezone.now),
+                ),
+            ],
+            options={
+                "db_table": "sentry_eventuser",
+            },
+        ),
+        migrations.CreateModel(
+            name="ExternalIssue",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("organization_id", sentry.db.models.fields.bounded.BoundedPositiveIntegerField()),
+                ("integration_id", sentry.db.models.fields.bounded.BoundedPositiveIntegerField()),
+                ("key", models.CharField(max_length=128)),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+                ("title", models.TextField(null=True)),
+                ("description", models.TextField(null=True)),
+                ("metadata", sentry.db.models.fields.jsonfield.JSONField(null=True)),
+            ],
+            options={
+                "db_table": "sentry_externalissue",
+            },
+        ),
+        migrations.CreateModel(
+            name="FeatureAdoption",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("feature_id", models.PositiveIntegerField()),
+                ("date_completed", models.DateTimeField(default=django.utils.timezone.now)),
+                ("complete", models.BooleanField(default=False)),
+                ("applicable", models.BooleanField(default=True)),
+                ("data", sentry.db.models.fields.jsonfield.JSONField(default=dict)),
+            ],
+            options={
+                "db_table": "sentry_featureadoption",
+            },
+        ),
+        migrations.CreateModel(
+            name="File",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("name", models.TextField()),
+                ("type", models.CharField(max_length=64)),
+                (
+                    "timestamp",
+                    models.DateTimeField(db_index=True, default=django.utils.timezone.now),
+                ),
+                ("headers", sentry.db.models.fields.jsonfield.JSONField(default=dict)),
+                ("size", sentry.db.models.fields.bounded.BoundedPositiveIntegerField(null=True)),
+                ("checksum", models.CharField(db_index=True, max_length=40, null=True)),
+                ("path", models.TextField(null=True)),
+            ],
+            options={
+                "db_table": "sentry_file",
+            },
+        ),
+        migrations.CreateModel(
+            name="FileBlob",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("path", models.TextField(null=True)),
+                ("size", sentry.db.models.fields.bounded.BoundedPositiveIntegerField(null=True)),
+                ("checksum", models.CharField(max_length=40, unique=True)),
+                (
+                    "timestamp",
+                    models.DateTimeField(db_index=True, default=django.utils.timezone.now),
+                ),
+            ],
+            options={
+                "db_table": "sentry_fileblob",
+            },
+        ),
+        migrations.CreateModel(
+            name="FileBlobIndex",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("offset", sentry.db.models.fields.bounded.BoundedPositiveIntegerField()),
+                (
+                    "blob",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.FileBlob"
+                    ),
+                ),
+                (
+                    "file",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.File"
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_fileblobindex",
+            },
+        ),
+        migrations.CreateModel(
+            name="FileBlobOwner",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                (
+                    "blob",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.FileBlob"
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_fileblobowner",
+            },
+        ),
+        migrations.CreateModel(
+            name="Group",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("logger", models.CharField(blank=True, db_index=True, default="", max_length=64)),
+                (
+                    "level",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
+                        blank=True, db_index=True, default=40
+                    ),
+                ),
+                ("message", models.TextField()),
+                (
+                    "culprit",
+                    models.CharField(blank=True, db_column="view", max_length=200, null=True),
+                ),
+                (
+                    "num_comments",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
+                        default=0, null=True
+                    ),
+                ),
+                ("platform", models.CharField(max_length=64, null=True)),
+                (
+                    "status",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
+                        db_index=True, default=0
+                    ),
+                ),
+                (
+                    "times_seen",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
+                        db_index=True, default=1
+                    ),
+                ),
+                (
+                    "last_seen",
+                    models.DateTimeField(db_index=True, default=django.utils.timezone.now),
+                ),
+                (
+                    "first_seen",
+                    models.DateTimeField(db_index=True, default=django.utils.timezone.now),
+                ),
+                ("resolved_at", models.DateTimeField(db_index=True, null=True)),
+                ("active_at", models.DateTimeField(db_index=True, null=True)),
+                (
+                    "time_spent_total",
+                    sentry.db.models.fields.bounded.BoundedIntegerField(default=0),
+                ),
+                (
+                    "time_spent_count",
+                    sentry.db.models.fields.bounded.BoundedIntegerField(default=0),
+                ),
+                ("score", sentry.db.models.fields.bounded.BoundedIntegerField(default=0)),
+                ("is_public", models.NullBooleanField(default=False)),
+                (
+                    "data",
+                    sentry.db.models.fields.gzippeddict.GzippedDictField(blank=True, null=True),
+                ),
+                ("short_id", sentry.db.models.fields.bounded.BoundedBigIntegerField(null=True)),
+            ],
+            options={
+                "verbose_name_plural": "grouped messages",
+                "db_table": "sentry_groupedmessage",
+                "verbose_name": "grouped message",
+                "permissions": (("can_view", "Can view"),),
+            },
+        ),
+        migrations.CreateModel(
+            name="GroupAssignee",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+                (
+                    "group",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE,
+                        related_name="assignee_set",
+                        to="sentry.Group",
+                        unique=True,
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_groupasignee",
+            },
+        ),
+        migrations.CreateModel(
+            name="GroupBookmark",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now, null=True)),
+                (
+                    "group",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE,
+                        related_name="bookmark_set",
+                        to="sentry.Group",
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_groupbookmark",
+            },
+        ),
+        migrations.CreateModel(
+            name="GroupCommitResolution",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("group_id", sentry.db.models.fields.bounded.BoundedPositiveIntegerField()),
+                (
+                    "commit_id",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(db_index=True),
+                ),
+                (
+                    "datetime",
+                    models.DateTimeField(db_index=True, default=django.utils.timezone.now),
+                ),
+            ],
+            options={
+                "db_table": "sentry_groupcommitresolution",
+            },
+        ),
+        migrations.CreateModel(
+            name="GroupEmailThread",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("email", models.EmailField(max_length=75)),
+                ("msgid", models.CharField(max_length=100)),
+                ("date", models.DateTimeField(db_index=True, default=django.utils.timezone.now)),
+                (
+                    "group",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE,
+                        related_name="groupemail_set",
+                        to="sentry.Group",
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_groupemailthread",
+            },
+        ),
+        migrations.CreateModel(
+            name="GroupEnvironment",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                (
+                    "first_seen",
+                    models.DateTimeField(
+                        db_index=True, default=django.utils.timezone.now, null=True
+                    ),
+                ),
+                (
+                    "environment",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        db_constraint=False,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to="sentry.Environment",
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_groupenvironment",
+            },
+        ),
+        migrations.CreateModel(
+            name="GroupHash",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("hash", models.CharField(max_length=32)),
+                (
+                    "group_tombstone_id",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
+                        db_index=True, null=True
+                    ),
+                ),
+                ("state", sentry.db.models.fields.bounded.BoundedPositiveIntegerField(null=True)),
+                (
+                    "group",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        null=True, on_delete=django.db.models.deletion.CASCADE, to="sentry.Group"
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_grouphash",
+            },
+        ),
+        migrations.CreateModel(
+            name="GroupLink",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("group_id", sentry.db.models.fields.bounded.BoundedBigIntegerField()),
+                (
+                    "project_id",
+                    sentry.db.models.fields.bounded.BoundedBigIntegerField(db_index=True),
+                ),
+                (
+                    "linked_type",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(default=1),
+                ),
+                ("linked_id", sentry.db.models.fields.bounded.BoundedBigIntegerField()),
+                (
+                    "relationship",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(default=2),
+                ),
+                ("data", sentry.db.models.fields.jsonfield.JSONField(default=dict)),
+                (
+                    "datetime",
+                    models.DateTimeField(db_index=True, default=django.utils.timezone.now),
+                ),
+            ],
+            options={
+                "db_table": "sentry_grouplink",
+            },
+        ),
+        migrations.CreateModel(
+            name="GroupMeta",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("key", models.CharField(max_length=64)),
+                ("value", models.TextField()),
+                (
+                    "group",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Group"
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_groupmeta",
+            },
+        ),
+        migrations.CreateModel(
+            name="GroupRedirect",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("group_id", sentry.db.models.fields.bounded.BoundedBigIntegerField(db_index=True)),
+                (
+                    "previous_group_id",
+                    sentry.db.models.fields.bounded.BoundedBigIntegerField(unique=True),
+                ),
+            ],
+            options={
+                "db_table": "sentry_groupredirect",
+            },
+        ),
+        migrations.CreateModel(
+            name="GroupRelease",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                (
+                    "project_id",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(db_index=True),
+                ),
+                ("group_id", sentry.db.models.fields.bounded.BoundedPositiveIntegerField()),
+                (
+                    "release_id",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(db_index=True),
+                ),
+                ("environment", models.CharField(default="", max_length=64)),
+                ("first_seen", models.DateTimeField(default=django.utils.timezone.now)),
+                (
+                    "last_seen",
+                    models.DateTimeField(db_index=True, default=django.utils.timezone.now),
+                ),
+            ],
+            options={
+                "db_table": "sentry_grouprelease",
+            },
+        ),
+        migrations.CreateModel(
+            name="GroupResolution",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("type", sentry.db.models.fields.bounded.BoundedPositiveIntegerField(null=True)),
+                (
+                    "actor_id",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(null=True),
+                ),
+                (
+                    "datetime",
+                    models.DateTimeField(db_index=True, default=django.utils.timezone.now),
+                ),
+                ("status", sentry.db.models.fields.bounded.BoundedPositiveIntegerField(default=0)),
+                (
+                    "group",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Group", unique=True
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_groupresolution",
+            },
+        ),
+        migrations.CreateModel(
+            name="GroupRuleStatus",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("status", models.PositiveSmallIntegerField(default=0)),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+                ("last_active", models.DateTimeField(null=True)),
+                (
+                    "group",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Group"
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_grouprulestatus",
+            },
+        ),
+        migrations.CreateModel(
+            name="GroupSeen",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("last_seen", models.DateTimeField(default=django.utils.timezone.now)),
+                (
+                    "group",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Group"
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_groupseen",
+            },
+        ),
+        migrations.CreateModel(
+            name="GroupShare",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                (
+                    "uuid",
+                    models.CharField(
+                        default=sentry.models.groupshare.default_uuid, max_length=32, unique=True
+                    ),
+                ),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+                (
+                    "group",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Group", unique=True
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_groupshare",
+            },
+        ),
+        migrations.CreateModel(
+            name="GroupSnooze",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("until", models.DateTimeField(null=True)),
+                ("count", sentry.db.models.fields.bounded.BoundedPositiveIntegerField(null=True)),
+                ("window", sentry.db.models.fields.bounded.BoundedPositiveIntegerField(null=True)),
+                (
+                    "user_count",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(null=True),
+                ),
+                (
+                    "user_window",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(null=True),
+                ),
+                ("state", sentry.db.models.fields.jsonfield.JSONField(null=True)),
+                (
+                    "actor_id",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(null=True),
+                ),
+                (
+                    "group",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Group", unique=True
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_groupsnooze",
+            },
+        ),
+        migrations.CreateModel(
+            name="GroupSubscription",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("is_active", models.BooleanField(default=True)),
+                ("reason", sentry.db.models.fields.bounded.BoundedPositiveIntegerField(default=0)),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now, null=True)),
+                (
+                    "group",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE,
+                        related_name="subscription_set",
+                        to="sentry.Group",
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_groupsubscription",
+            },
+        ),
+        migrations.CreateModel(
+            name="GroupTombstone",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                (
+                    "previous_group_id",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(unique=True),
+                ),
+                (
+                    "level",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
+                        blank=True, default=40
+                    ),
+                ),
+                ("message", models.TextField()),
+                ("culprit", models.CharField(blank=True, max_length=200, null=True)),
+                (
+                    "data",
+                    sentry.db.models.fields.gzippeddict.GzippedDictField(blank=True, null=True),
+                ),
+                (
+                    "actor_id",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(null=True),
+                ),
+            ],
+            options={
+                "db_table": "sentry_grouptombstone",
+            },
+        ),
+        migrations.CreateModel(
+            name="Identity",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("external_id", models.CharField(max_length=64)),
+                ("data", sentry.db.models.fields.encrypted.EncryptedJsonField(default=dict)),
+                ("status", sentry.db.models.fields.bounded.BoundedPositiveIntegerField(default=0)),
+                ("scopes", sentry.db.models.fields.array.ArrayField(null=True)),
+                ("date_verified", models.DateTimeField(default=django.utils.timezone.now)),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+            ],
+            options={
+                "db_table": "sentry_identity",
+            },
+        ),
+        migrations.CreateModel(
+            name="IdentityProvider",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("type", models.CharField(max_length=64)),
+                ("config", sentry.db.models.fields.encrypted.EncryptedJsonField(default=dict)),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now, null=True)),
+                ("external_id", models.CharField(max_length=64, null=True)),
+            ],
+            options={
+                "db_table": "sentry_identityprovider",
+            },
+        ),
+        migrations.CreateModel(
+            name="Integration",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("provider", models.CharField(max_length=64)),
+                ("external_id", models.CharField(max_length=64)),
+                ("name", models.CharField(max_length=200)),
+                ("metadata", sentry.db.models.fields.encrypted.EncryptedJsonField(default=dict)),
+                (
+                    "status",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
+                        default=0, null=True
+                    ),
+                ),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now, null=True)),
+            ],
+            options={
+                "db_table": "sentry_integration",
+            },
+        ),
+        migrations.CreateModel(
+            name="IntegrationExternalProject",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                (
+                    "organization_integration_id",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(db_index=True),
+                ),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+                ("name", models.CharField(max_length=128)),
+                ("external_id", models.CharField(max_length=64)),
+                ("resolved_status", models.CharField(max_length=64)),
+                ("unresolved_status", models.CharField(max_length=64)),
+            ],
+            options={
+                "db_table": "sentry_integrationexternalproject",
+            },
+        ),
+        migrations.CreateModel(
+            name="LatestRelease",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("repository_id", sentry.db.models.fields.bounded.BoundedBigIntegerField()),
+                ("environment_id", sentry.db.models.fields.bounded.BoundedBigIntegerField()),
+                ("release_id", sentry.db.models.fields.bounded.BoundedBigIntegerField()),
+                ("deploy_id", sentry.db.models.fields.bounded.BoundedBigIntegerField(null=True)),
+                ("commit_id", sentry.db.models.fields.bounded.BoundedBigIntegerField(null=True)),
+            ],
+            options={
+                "db_table": "sentry_latestrelease",
+            },
+        ),
+        migrations.CreateModel(
+            name="LostPasswordHash",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("hash", models.CharField(max_length=32)),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+                (
+                    "user",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to=settings.AUTH_USER_MODEL,
+                        unique=True,
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_lostpasswordhash",
+            },
+        ),
+        migrations.CreateModel(
+            name="Monitor",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                (
+                    "guid",
+                    sentry.db.models.fields.uuid.UUIDField(
+                        editable=False, max_length=32, unique=True
+                    ),
+                ),
+                (
+                    "organization_id",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(db_index=True),
+                ),
+                (
+                    "project_id",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(db_index=True),
+                ),
+                ("name", models.CharField(max_length=128)),
+                ("status", sentry.db.models.fields.bounded.BoundedPositiveIntegerField(default=0)),
+                ("type", sentry.db.models.fields.bounded.BoundedPositiveIntegerField(default=0)),
+                ("config", sentry.db.models.fields.encrypted.EncryptedJsonField(default=dict)),
+                ("next_checkin", models.DateTimeField(null=True)),
+                ("last_checkin", models.DateTimeField(null=True)),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+            ],
+            options={
+                "db_table": "sentry_monitor",
+            },
+        ),
+        migrations.CreateModel(
+            name="MonitorCheckIn",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                (
+                    "guid",
+                    sentry.db.models.fields.uuid.UUIDField(
+                        editable=False, max_length=32, unique=True
+                    ),
+                ),
+                (
+                    "project_id",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(db_index=True),
+                ),
+                ("status", sentry.db.models.fields.bounded.BoundedPositiveIntegerField(default=0)),
+                ("config", sentry.db.models.fields.encrypted.EncryptedJsonField(default=dict)),
+                (
+                    "duration",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(null=True),
+                ),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+                ("date_updated", models.DateTimeField(default=django.utils.timezone.now)),
+            ],
+            options={
+                "db_table": "sentry_monitorcheckin",
+            },
+        ),
+        migrations.CreateModel(
+            name="MonitorLocation",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                (
+                    "guid",
+                    sentry.db.models.fields.uuid.UUIDField(
+                        editable=False, max_length=32, unique=True
+                    ),
+                ),
+                ("name", models.CharField(max_length=128)),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+            ],
+            options={
+                "db_table": "sentry_monitorlocation",
+            },
+        ),
+        migrations.CreateModel(
+            name="Option",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("key", models.CharField(max_length=64, unique=True)),
+                (
+                    "value",
+                    sentry.db.models.fields.encrypted.EncryptedPickledObjectField(editable=False),
+                ),
+                ("last_updated", models.DateTimeField(default=django.utils.timezone.now)),
+            ],
+            options={
+                "db_table": "sentry_option",
+            },
+        ),
+        migrations.CreateModel(
+            name="Organization",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("name", models.CharField(max_length=64)),
+                ("slug", models.SlugField(unique=True)),
+                ("status", sentry.db.models.fields.bounded.BoundedPositiveIntegerField(default=0)),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+                ("default_role", models.CharField(default="member", max_length=32)),
+                (
+                    "flags",
+                    bitfield.models.BitField(
+                        (
+                            (
+                                "allow_joinleave",
+                                "Allow members to join and leave teams without requiring approval.",
+                            ),
+                            (
+                                "enhanced_privacy",
+                                "Enable enhanced privacy controls to limit personally identifiable information (PII) as well as source code in things like notifications.",
+                            ),
+                            (
+                                "disable_shared_issues",
+                                "Disable sharing of limited details on issues to anonymous users.",
+                            ),
+                            (
+                                "early_adopter",
+                                "Enable early adopter status, gaining access to features prior to public release.",
+                            ),
+                            (
+                                "require_2fa",
+                                "Require and enforce two-factor authentication for all members.",
+                            ),
+                            (
+                                "disable_new_visibility_features",
+                                "Temporarily opt out of new visibility features and ui",
+                            ),
+                        ),
+                        default=1,
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_organization",
+            },
+        ),
+        migrations.CreateModel(
+            name="OrganizationAccessRequest",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_organizationaccessrequest",
+            },
+        ),
+        migrations.CreateModel(
+            name="OrganizationAvatar",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("ident", models.CharField(db_index=True, max_length=32, unique=True)),
+                ("avatar_type", models.PositiveSmallIntegerField(default=0)),
+                (
+                    "file",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        null=True,
+                        on_delete=django.db.models.deletion.SET_NULL,
+                        to="sentry.File",
+                        unique=True,
+                    ),
+                ),
+                (
+                    "organization",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE,
+                        related_name="avatar",
+                        to="sentry.Organization",
+                        unique=True,
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_organizationavatar",
+            },
+        ),
+        migrations.CreateModel(
+            name="OrganizationIntegration",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("config", sentry.db.models.fields.encrypted.EncryptedJsonField(default=dict)),
+                (
+                    "default_auth_id",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
+                        db_index=True, null=True
+                    ),
+                ),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now, null=True)),
+                ("status", sentry.db.models.fields.bounded.BoundedPositiveIntegerField(default=0)),
+                (
+                    "integration",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Integration"
+                    ),
+                ),
+                (
+                    "organization",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Organization"
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_organizationintegration",
+            },
+        ),
+        migrations.CreateModel(
+            name="OrganizationMember",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("email", models.EmailField(blank=True, max_length=75, null=True)),
+                ("role", models.CharField(default="member", max_length=32)),
+                (
+                    "flags",
+                    bitfield.models.BitField(
+                        (("sso:linked", "sso:linked"), ("sso:invalid", "sso:invalid")), default=0
+                    ),
+                ),
+                ("token", models.CharField(blank=True, max_length=64, null=True, unique=True)),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+                ("token_expires_at", models.DateTimeField(default=None, null=True)),
+                ("has_global_access", models.BooleanField(default=True)),
+                (
+                    "type",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
+                        blank=True, default=50
+                    ),
+                ),
+                (
+                    "organization",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE,
+                        related_name="member_set",
+                        to="sentry.Organization",
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_organizationmember",
+            },
+        ),
+        migrations.CreateModel(
+            name="OrganizationMemberTeam",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("is_active", models.BooleanField(default=True)),
+                (
+                    "organizationmember",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.OrganizationMember"
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_organizationmember_teams",
+            },
+        ),
+        migrations.CreateModel(
+            name="OrganizationOnboardingTask",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("task", sentry.db.models.fields.bounded.BoundedPositiveIntegerField()),
+                ("status", sentry.db.models.fields.bounded.BoundedPositiveIntegerField()),
+                ("date_completed", models.DateTimeField(default=django.utils.timezone.now)),
+                (
+                    "project_id",
+                    sentry.db.models.fields.bounded.BoundedBigIntegerField(blank=True, null=True),
+                ),
+                ("data", sentry.db.models.fields.jsonfield.JSONField(default=dict)),
+                (
+                    "organization",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Organization"
+                    ),
+                ),
+                (
+                    "user",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        null=True,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to=settings.AUTH_USER_MODEL,
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_organizationonboardingtask",
+            },
+        ),
+        migrations.CreateModel(
+            name="OrganizationOption",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("key", models.CharField(max_length=64)),
+                (
+                    "value",
+                    sentry.db.models.fields.encrypted.EncryptedPickledObjectField(editable=False),
+                ),
+                (
+                    "organization",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Organization"
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_organizationoptions",
+            },
+        ),
+        migrations.CreateModel(
+            name="PlatformExternalIssue",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("group_id", sentry.db.models.fields.bounded.BoundedBigIntegerField()),
+                ("service_type", models.CharField(max_length=64)),
+                ("display_name", models.TextField()),
+                ("web_url", models.URLField()),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+            ],
+            options={
+                "db_table": "sentry_platformexternalissue",
+            },
+        ),
+        migrations.CreateModel(
+            name="ProcessingIssue",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("checksum", models.CharField(db_index=True, max_length=40)),
+                ("type", models.CharField(max_length=30)),
+                ("data", sentry.db.models.fields.gzippeddict.GzippedDictField()),
+                ("datetime", models.DateTimeField(default=django.utils.timezone.now)),
+            ],
+            options={
+                "db_table": "sentry_processingissue",
+            },
+        ),
+        migrations.CreateModel(
+            name="Project",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("slug", models.SlugField(null=True)),
+                ("name", models.CharField(max_length=200)),
+                ("forced_color", models.CharField(blank=True, max_length=6, null=True)),
+                ("public", models.BooleanField(default=False)),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+                (
+                    "status",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
+                        db_index=True, default=0
+                    ),
+                ),
+                ("first_event", models.DateTimeField(null=True)),
+                (
+                    "flags",
+                    bitfield.models.BitField(
+                        (("has_releases", "This Project has sent release data"),),
+                        default=0,
+                        null=True,
+                    ),
+                ),
+                ("platform", models.CharField(max_length=64, null=True)),
+                (
+                    "organization",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Organization"
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_project",
+            },
+            bases=(models.Model, sentry.db.mixin.PendingDeletionMixin),
+        ),
+        migrations.CreateModel(
+            name="ProjectAvatar",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("ident", models.CharField(db_index=True, max_length=32, unique=True)),
+                ("avatar_type", models.PositiveSmallIntegerField(default=0)),
+                (
+                    "file",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        null=True,
+                        on_delete=django.db.models.deletion.SET_NULL,
+                        to="sentry.File",
+                        unique=True,
+                    ),
+                ),
+                (
+                    "project",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE,
+                        related_name="avatar",
+                        to="sentry.Project",
+                        unique=True,
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_projectavatar",
+            },
+        ),
+        migrations.CreateModel(
+            name="ProjectBookmark",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now, null=True)),
+                (
+                    "project",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        blank=True,
+                        db_constraint=False,
+                        null=True,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to="sentry.Project",
+                    ),
+                ),
+                (
+                    "user",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_projectbookmark",
+            },
+        ),
+        migrations.CreateModel(
+            name="ProjectDebugFile",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("object_name", models.TextField()),
+                ("cpu_name", models.CharField(max_length=40)),
+                ("debug_id", models.CharField(db_column="uuid", max_length=64)),
+                ("code_id", models.CharField(max_length=64, null=True)),
+                ("data", sentry.db.models.fields.jsonfield.JSONField(null=True)),
+                (
+                    "file",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.File"
+                    ),
+                ),
+                (
+                    "project",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        null=True, on_delete=django.db.models.deletion.CASCADE, to="sentry.Project"
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_projectdsymfile",
+            },
+        ),
+        migrations.CreateModel(
+            name="ProjectIntegration",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("config", sentry.db.models.fields.encrypted.EncryptedJsonField(default=dict)),
+                (
+                    "integration",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Integration"
+                    ),
+                ),
+                (
+                    "project",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Project"
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_projectintegration",
+            },
+        ),
+        migrations.CreateModel(
+            name="ProjectKey",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("label", models.CharField(blank=True, max_length=64, null=True)),
+                ("public_key", models.CharField(max_length=32, null=True, unique=True)),
+                ("secret_key", models.CharField(max_length=32, null=True, unique=True)),
+                (
+                    "roles",
+                    bitfield.models.BitField(
+                        (("store", "Event API access"), ("api", "Web API access")), default=1
+                    ),
+                ),
+                (
+                    "status",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
+                        db_index=True, default=0
+                    ),
+                ),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now, null=True)),
+                (
+                    "rate_limit_count",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(null=True),
+                ),
+                (
+                    "rate_limit_window",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(null=True),
+                ),
+                ("data", sentry.db.models.fields.jsonfield.JSONField(default=dict)),
+                (
+                    "project",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE,
+                        related_name="key_set",
+                        to="sentry.Project",
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_projectkey",
+            },
+        ),
+        migrations.CreateModel(
+            name="ProjectOption",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("key", models.CharField(max_length=64)),
+                (
+                    "value",
+                    sentry.db.models.fields.encrypted.EncryptedPickledObjectField(editable=False),
+                ),
+                (
+                    "project",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Project"
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_projectoptions",
+            },
+        ),
+        migrations.CreateModel(
+            name="ProjectOwnership",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("raw", models.TextField(null=True)),
+                ("schema", sentry.db.models.fields.jsonfield.JSONField(null=True)),
+                ("fallthrough", models.BooleanField(default=True)),
+                ("date_created", models.DateTimeField(default=django.utils.timezone.now)),
+                ("last_updated", models.DateTimeField(default=django.utils.timezone.now)),
+                ("is_active", models.BooleanField(default=True)),
+                (
+                    "project",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to="sentry.Project",
+                        unique=True,
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_projectownership",
+            },
+        ),
+        migrations.CreateModel(
+            name="ProjectPlatform",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("project_id", sentry.db.models.fields.bounded.BoundedBigIntegerField()),
+                ("platform", models.CharField(max_length=64)),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+                ("last_seen", models.DateTimeField(default=django.utils.timezone.now)),
+            ],
+            options={
+                "db_table": "sentry_projectplatform",
+            },
+        ),
+        migrations.CreateModel(
+            name="ProjectRedirect",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("redirect_slug", models.SlugField()),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+                (
+                    "organization",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Organization"
+                    ),
+                ),
+                (
+                    "project",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Project"
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_projectredirect",
+            },
+        ),
+        migrations.CreateModel(
+            name="ProjectTeam",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                (
+                    "project",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Project"
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_projectteam",
+            },
+        ),
+        migrations.CreateModel(
+            name="PromptsActivity",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                (
+                    "organization_id",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(db_index=True),
+                ),
+                (
+                    "project_id",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(db_index=True),
+                ),
+                ("feature", models.CharField(max_length=64)),
+                ("data", sentry.db.models.fields.jsonfield.JSONField(default={})),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+                (
+                    "user",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_promptsactivity",
+            },
+        ),
+        migrations.CreateModel(
+            name="PullRequest",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                (
+                    "organization_id",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(db_index=True),
+                ),
+                ("repository_id", sentry.db.models.fields.bounded.BoundedPositiveIntegerField()),
+                ("key", models.CharField(max_length=64)),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+                ("title", models.TextField(null=True)),
+                ("message", models.TextField(null=True)),
+                ("merge_commit_sha", models.CharField(max_length=64, null=True)),
+                (
+                    "author",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        null=True,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to="sentry.CommitAuthor",
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_pull_request",
+            },
+        ),
+        migrations.CreateModel(
+            name="PullRequestCommit",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                (
+                    "commit",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Commit"
+                    ),
+                ),
+                (
+                    "pull_request",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.PullRequest"
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_pullrequest_commit",
+            },
+        ),
+        migrations.CreateModel(
+            name="RawEvent",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("event_id", models.CharField(max_length=32, null=True)),
+                ("datetime", models.DateTimeField(default=django.utils.timezone.now)),
+                ("data", sentry.db.models.fields.node.NodeField(blank=True, null=True)),
+                (
+                    "project",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Project"
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_rawevent",
+            },
+        ),
+        migrations.CreateModel(
+            name="RecentSearch",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("type", models.PositiveSmallIntegerField()),
+                ("query", models.TextField()),
+                ("query_hash", models.CharField(max_length=32)),
+                ("last_seen", models.DateTimeField(default=django.utils.timezone.now)),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+                (
+                    "organization",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Organization"
+                    ),
+                ),
+                (
+                    "user",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        db_index=False,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to=settings.AUTH_USER_MODEL,
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_recentsearch",
+            },
+        ),
+        migrations.CreateModel(
+            name="Relay",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("relay_id", models.CharField(max_length=64, unique=True)),
+                ("public_key", models.CharField(max_length=200)),
+                ("first_seen", models.DateTimeField(default=django.utils.timezone.now)),
+                ("last_seen", models.DateTimeField(default=django.utils.timezone.now)),
+                ("is_internal", models.BooleanField(default=False)),
+            ],
+            options={
+                "db_table": "sentry_relay",
+            },
+        ),
+        migrations.CreateModel(
+            name="Release",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("project_id", sentry.db.models.fields.bounded.BoundedBigIntegerField(null=True)),
+                ("version", models.CharField(max_length=250)),
+                ("ref", models.CharField(blank=True, max_length=250, null=True)),
+                ("url", models.URLField(blank=True, null=True)),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+                ("date_started", models.DateTimeField(blank=True, null=True)),
+                ("date_released", models.DateTimeField(blank=True, null=True)),
+                ("data", sentry.db.models.fields.jsonfield.JSONField(default={})),
+                (
+                    "new_groups",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(default=0),
+                ),
+                (
+                    "commit_count",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
+                        default=0, null=True
+                    ),
+                ),
+                (
+                    "last_commit_id",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(null=True),
+                ),
+                ("authors", sentry.db.models.fields.array.ArrayField(null=True)),
+                (
+                    "total_deploys",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
+                        default=0, null=True
+                    ),
+                ),
+                (
+                    "last_deploy_id",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(null=True),
+                ),
+                (
+                    "organization",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Organization"
+                    ),
+                ),
+                (
+                    "owner",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        blank=True,
+                        null=True,
+                        on_delete=django.db.models.deletion.SET_NULL,
+                        to=settings.AUTH_USER_MODEL,
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_release",
+            },
+        ),
+        migrations.CreateModel(
+            name="ReleaseCommit",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                (
+                    "organization_id",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(db_index=True),
+                ),
+                (
+                    "project_id",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(null=True),
+                ),
+                ("order", sentry.db.models.fields.bounded.BoundedPositiveIntegerField()),
+                (
+                    "commit",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Commit"
+                    ),
+                ),
+                (
+                    "release",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Release"
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_releasecommit",
+            },
+        ),
+        migrations.CreateModel(
+            name="ReleaseEnvironment",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                (
+                    "project_id",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(null=True),
+                ),
+                ("first_seen", models.DateTimeField(default=django.utils.timezone.now)),
+                (
+                    "last_seen",
+                    models.DateTimeField(db_index=True, default=django.utils.timezone.now),
+                ),
+                (
+                    "environment",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        db_constraint=False,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to="sentry.Environment",
+                    ),
+                ),
+                (
+                    "organization",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        db_constraint=False,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to="sentry.Organization",
+                    ),
+                ),
+                (
+                    "release",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        db_constraint=False,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to="sentry.Release",
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_environmentrelease",
+            },
+        ),
+        migrations.CreateModel(
+            name="ReleaseFile",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("project_id", sentry.db.models.fields.bounded.BoundedBigIntegerField(null=True)),
+                ("ident", models.CharField(max_length=40)),
+                ("name", models.TextField()),
+                (
+                    "dist",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        null=True,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to="sentry.Distribution",
+                    ),
+                ),
+                (
+                    "file",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.File"
+                    ),
+                ),
+                (
+                    "organization",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Organization"
+                    ),
+                ),
+                (
+                    "release",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Release"
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_releasefile",
+            },
+        ),
+        migrations.CreateModel(
+            name="ReleaseHeadCommit",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                (
+                    "organization_id",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(db_index=True),
+                ),
+                ("repository_id", sentry.db.models.fields.bounded.BoundedPositiveIntegerField()),
+                (
+                    "commit",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Commit"
+                    ),
+                ),
+                (
+                    "release",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Release"
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_releaseheadcommit",
+            },
+        ),
+        migrations.CreateModel(
+            name="ReleaseProject",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                (
+                    "new_groups",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
+                        default=0, null=True
+                    ),
+                ),
+                (
+                    "project",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Project"
+                    ),
+                ),
+                (
+                    "release",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Release"
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_release_project",
+            },
+        ),
+        migrations.CreateModel(
+            name="ReleaseProjectEnvironment",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                (
+                    "new_issues_count",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(default=0),
+                ),
+                ("first_seen", models.DateTimeField(default=django.utils.timezone.now)),
+                (
+                    "last_seen",
+                    models.DateTimeField(db_index=True, default=django.utils.timezone.now),
+                ),
+                (
+                    "last_deploy_id",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
+                        db_index=True, null=True
+                    ),
+                ),
+                (
+                    "environment",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Environment"
+                    ),
+                ),
+                (
+                    "project",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Project"
+                    ),
+                ),
+                (
+                    "release",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Release"
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_releaseprojectenvironment",
+            },
+        ),
+        migrations.CreateModel(
+            name="Repository",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                (
+                    "organization_id",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(db_index=True),
+                ),
+                ("name", models.CharField(max_length=200)),
+                ("url", models.URLField(null=True)),
+                ("provider", models.CharField(max_length=64, null=True)),
+                ("external_id", models.CharField(max_length=64, null=True)),
+                ("config", sentry.db.models.fields.jsonfield.JSONField(default=dict)),
+                (
+                    "status",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
+                        db_index=True, default=0
+                    ),
+                ),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+                (
+                    "integration_id",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
+                        db_index=True, null=True
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_repository",
+            },
+            bases=(models.Model, sentry.db.mixin.PendingDeletionMixin),
+        ),
+        migrations.CreateModel(
+            name="ReprocessingReport",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("event_id", models.CharField(max_length=32, null=True)),
+                ("datetime", models.DateTimeField(default=django.utils.timezone.now)),
+                (
+                    "project",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Project"
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_reprocessingreport",
+            },
+        ),
+        migrations.CreateModel(
+            name="Rule",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                (
+                    "environment_id",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(null=True),
+                ),
+                ("label", models.CharField(max_length=64)),
+                ("data", sentry.db.models.fields.gzippeddict.GzippedDictField()),
+                (
+                    "status",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
+                        db_index=True, default=0
+                    ),
+                ),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+                (
+                    "project",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Project"
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_rule",
+            },
+        ),
+        migrations.CreateModel(
+            name="SavedSearch",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("type", models.PositiveSmallIntegerField(default=0, null=True)),
+                ("name", models.CharField(max_length=128)),
+                ("query", models.TextField()),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+                ("is_default", models.BooleanField(default=False)),
+                ("is_global", models.NullBooleanField(db_index=True, default=False)),
+                (
+                    "organization",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        null=True,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to="sentry.Organization",
+                    ),
+                ),
+                (
+                    "owner",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        null=True,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to=settings.AUTH_USER_MODEL,
+                    ),
+                ),
+                (
+                    "project",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        null=True, on_delete=django.db.models.deletion.CASCADE, to="sentry.Project"
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_savedsearch",
+            },
+        ),
+        migrations.CreateModel(
+            name="SavedSearchUserDefault",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                (
+                    "project",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Project"
+                    ),
+                ),
+                (
+                    "savedsearch",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.SavedSearch"
+                    ),
+                ),
+                (
+                    "user",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_savedsearch_userdefault",
+            },
+        ),
+        migrations.CreateModel(
+            name="ScheduledDeletion",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                (
+                    "guid",
+                    models.CharField(
+                        default=sentry.models.scheduledeletion.default_guid,
+                        max_length=32,
+                        unique=True,
+                    ),
+                ),
+                ("app_label", models.CharField(max_length=64)),
+                ("model_name", models.CharField(max_length=64)),
+                ("object_id", sentry.db.models.fields.bounded.BoundedBigIntegerField()),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+                (
+                    "date_scheduled",
+                    models.DateTimeField(
+                        default=sentry.models.scheduledeletion.default_date_schedule
+                    ),
+                ),
+                ("actor_id", sentry.db.models.fields.bounded.BoundedBigIntegerField(null=True)),
+                ("data", sentry.db.models.fields.jsonfield.JSONField(default={})),
+                ("in_progress", models.BooleanField(default=False)),
+                ("aborted", models.BooleanField(default=False)),
+            ],
+            options={
+                "db_table": "sentry_scheduleddeletion",
+            },
+        ),
+        migrations.CreateModel(
+            name="ScheduledJob",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("name", models.CharField(max_length=128)),
+                ("payload", sentry.db.models.fields.jsonfield.JSONField(default=dict)),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+                ("date_scheduled", models.DateTimeField()),
+            ],
+            options={
+                "db_table": "sentry_scheduledjob",
+            },
+        ),
+        migrations.CreateModel(
+            name="SentryApp",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("date_deleted", models.DateTimeField(blank=True, null=True)),
+                (
+                    "scopes",
+                    bitfield.models.BitField(
+                        (
+                            ("project:read", "project:read"),
+                            ("project:write", "project:write"),
+                            ("project:admin", "project:admin"),
+                            ("project:releases", "project:releases"),
+                            ("team:read", "team:read"),
+                            ("team:write", "team:write"),
+                            ("team:admin", "team:admin"),
+                            ("event:read", "event:read"),
+                            ("event:write", "event:write"),
+                            ("event:admin", "event:admin"),
+                            ("org:read", "org:read"),
+                            ("org:write", "org:write"),
+                            ("org:admin", "org:admin"),
+                            ("member:read", "member:read"),
+                            ("member:write", "member:write"),
+                            ("member:admin", "member:admin"),
+                        ),
+                        default=None,
+                    ),
+                ),
+                ("scope_list", sentry.db.models.fields.array.ArrayField(null=True)),
+                ("name", models.TextField()),
+                ("slug", models.CharField(max_length=64, unique=True)),
+                ("author", models.TextField(null=True)),
+                (
+                    "status",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
+                        db_index=True, default=0
+                    ),
+                ),
+                (
+                    "uuid",
+                    models.CharField(default=sentry.models.sentryapp.default_uuid, max_length=64),
+                ),
+                ("redirect_url", models.URLField(null=True)),
+                ("webhook_url", models.URLField()),
+                ("is_alertable", models.BooleanField(default=False)),
+                ("events", sentry.db.models.fields.array.ArrayField(null=True)),
+                ("overview", models.TextField(null=True)),
+                ("schema", sentry.db.models.fields.encrypted.EncryptedJsonField(default=dict)),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+                ("date_updated", models.DateTimeField(default=django.utils.timezone.now)),
+                (
+                    "application",
+                    models.OneToOneField(
+                        null=True,
+                        on_delete=django.db.models.deletion.SET_NULL,
+                        related_name="sentry_app",
+                        to="sentry.ApiApplication",
+                    ),
+                ),
+                (
+                    "owner",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE,
+                        related_name="owned_sentry_apps",
+                        to="sentry.Organization",
+                    ),
+                ),
+                (
+                    "proxy_user",
+                    models.OneToOneField(
+                        null=True,
+                        on_delete=django.db.models.deletion.SET_NULL,
+                        related_name="sentry_app",
+                        to=settings.AUTH_USER_MODEL,
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_sentryapp",
+            },
+        ),
+        migrations.CreateModel(
+            name="SentryAppAvatar",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("ident", models.CharField(db_index=True, max_length=32, unique=True)),
+                ("avatar_type", models.PositiveSmallIntegerField(default=0)),
+                (
+                    "file",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        null=True,
+                        on_delete=django.db.models.deletion.SET_NULL,
+                        to="sentry.File",
+                        unique=True,
+                    ),
+                ),
+                (
+                    "sentry_app",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE,
+                        related_name="avatar",
+                        to="sentry.SentryApp",
+                        unique=True,
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_sentryappavatar",
+            },
+        ),
+        migrations.CreateModel(
+            name="SentryAppComponent",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                (
+                    "uuid",
+                    sentry.db.models.fields.uuid.UUIDField(
+                        editable=False, max_length=32, unique=True
+                    ),
+                ),
+                ("type", models.CharField(max_length=64)),
+                ("schema", sentry.db.models.fields.encrypted.EncryptedJsonField(default=dict)),
+                (
+                    "sentry_app",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE,
+                        related_name="components",
+                        to="sentry.SentryApp",
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_sentryappcomponent",
+            },
+        ),
+        migrations.CreateModel(
+            name="SentryAppInstallation",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("date_deleted", models.DateTimeField(blank=True, null=True)),
+                (
+                    "uuid",
+                    models.CharField(
+                        default=sentry.models.sentryappinstallation.default_uuid, max_length=64
+                    ),
+                ),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+                ("date_updated", models.DateTimeField(default=django.utils.timezone.now)),
+                (
+                    "api_grant",
+                    models.OneToOneField(
+                        null=True,
+                        on_delete=django.db.models.deletion.SET_NULL,
+                        related_name="sentry_app_installation",
+                        to="sentry.ApiGrant",
+                    ),
+                ),
+                (
+                    "organization",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE,
+                        related_name="sentry_app_installations",
+                        to="sentry.Organization",
+                    ),
+                ),
+                (
+                    "sentry_app",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE,
+                        related_name="installations",
+                        to="sentry.SentryApp",
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_sentryappinstallation",
+            },
+        ),
+        migrations.CreateModel(
+            name="ServiceHook",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("guid", models.CharField(max_length=32, null=True, unique=True)),
+                (
+                    "actor_id",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(db_index=True),
+                ),
+                (
+                    "project_id",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(db_index=True),
+                ),
+                (
+                    "organization_id",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
+                        db_index=True, null=True
+                    ),
+                ),
+                ("url", models.URLField(max_length=512)),
+                (
+                    "secret",
+                    sentry.db.models.fields.encrypted.EncryptedTextField(
+                        default=sentry.models.servicehook.generate_secret
+                    ),
+                ),
+                ("events", sentry.db.models.fields.array.ArrayField(null=True)),
+                (
+                    "status",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
+                        db_index=True, default=0
+                    ),
+                ),
+                ("version", sentry.db.models.fields.bounded.BoundedPositiveIntegerField(default=0)),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+                (
+                    "application",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        null=True,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to="sentry.ApiApplication",
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_servicehook",
+            },
+        ),
+        migrations.CreateModel(
+            name="ServiceHookProject",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                (
+                    "project_id",
+                    sentry.db.models.fields.bounded.BoundedPositiveIntegerField(db_index=True),
+                ),
+                (
+                    "service_hook",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.ServiceHook"
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_servicehookproject",
+            },
+        ),
+        migrations.CreateModel(
+            name="Team",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("slug", models.SlugField()),
+                ("name", models.CharField(max_length=64)),
+                ("status", sentry.db.models.fields.bounded.BoundedPositiveIntegerField(default=0)),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now, null=True)),
+                (
+                    "organization",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Organization"
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_team",
+            },
+        ),
+        migrations.CreateModel(
+            name="TeamAvatar",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("ident", models.CharField(db_index=True, max_length=32, unique=True)),
+                ("avatar_type", models.PositiveSmallIntegerField(default=0)),
+                (
+                    "file",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        null=True,
+                        on_delete=django.db.models.deletion.SET_NULL,
+                        to="sentry.File",
+                        unique=True,
+                    ),
+                ),
+                (
+                    "team",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE,
+                        related_name="avatar",
+                        to="sentry.Team",
+                        unique=True,
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_teamavatar",
+            },
+        ),
+        migrations.CreateModel(
+            name="UserAvatar",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("ident", models.CharField(db_index=True, max_length=32, unique=True)),
+                ("avatar_type", models.PositiveSmallIntegerField(default=0)),
+                (
+                    "file",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        null=True,
+                        on_delete=django.db.models.deletion.SET_NULL,
+                        to="sentry.File",
+                        unique=True,
+                    ),
+                ),
+                (
+                    "user",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE,
+                        related_name="avatar",
+                        to=settings.AUTH_USER_MODEL,
+                        unique=True,
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_useravatar",
+            },
+        ),
+        migrations.CreateModel(
+            name="UserEmail",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("email", models.EmailField(max_length=75)),
+                (
+                    "validation_hash",
+                    models.CharField(
+                        default=sentry.models.useremail.default_validation_hash, max_length=32
+                    ),
+                ),
+                ("date_hash_added", models.DateTimeField(default=django.utils.timezone.now)),
+                ("is_verified", models.BooleanField(default=False)),
+                (
+                    "user",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE,
+                        related_name="emails",
+                        to=settings.AUTH_USER_MODEL,
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_useremail",
+            },
+        ),
+        migrations.CreateModel(
+            name="UserIP",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("ip_address", models.GenericIPAddressField()),
+                ("country_code", models.CharField(max_length=16, null=True)),
+                ("region_code", models.CharField(max_length=16, null=True)),
+                ("first_seen", models.DateTimeField(default=django.utils.timezone.now)),
+                ("last_seen", models.DateTimeField(default=django.utils.timezone.now)),
+                (
+                    "user",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_userip",
+            },
+        ),
+        migrations.CreateModel(
+            name="UserOption",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("key", models.CharField(max_length=64)),
+                (
+                    "value",
+                    sentry.db.models.fields.encrypted.EncryptedPickledObjectField(editable=False),
+                ),
+                (
+                    "organization",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        null=True,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to="sentry.Organization",
+                    ),
+                ),
+                (
+                    "project",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        null=True, on_delete=django.db.models.deletion.CASCADE, to="sentry.Project"
+                    ),
+                ),
+                (
+                    "user",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_useroption",
+            },
+        ),
+        migrations.CreateModel(
+            name="UserPermission",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("permission", models.CharField(max_length=32)),
+                (
+                    "user",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_userpermission",
+            },
+        ),
+        migrations.CreateModel(
+            name="UserReport",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                (
+                    "event_user_id",
+                    sentry.db.models.fields.bounded.BoundedBigIntegerField(null=True),
+                ),
+                ("event_id", models.CharField(max_length=32)),
+                ("name", models.CharField(max_length=128)),
+                ("email", models.EmailField(max_length=75)),
+                ("comments", models.TextField()),
+                (
+                    "date_added",
+                    models.DateTimeField(db_index=True, default=django.utils.timezone.now),
+                ),
+                (
+                    "environment",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        null=True,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to="sentry.Environment",
+                    ),
+                ),
+                (
+                    "group",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        null=True, on_delete=django.db.models.deletion.CASCADE, to="sentry.Group"
+                    ),
+                ),
+                (
+                    "project",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Project"
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_userreport",
+            },
+        ),
+        migrations.AlterUniqueTogether(
+            name="scheduleddeletion",
+            unique_together={("app_label", "model_name", "object_id")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="repository",
+            unique_together={
+                ("organization_id", "provider", "external_id"),
+                ("organization_id", "name"),
+            },
+        ),
+        migrations.AddField(
+            model_name="release",
+            name="projects",
+            field=models.ManyToManyField(
+                related_name="releases", through="sentry.ReleaseProject", to="sentry.Project"
+            ),
+        ),
+        migrations.AddField(
+            model_name="projectteam",
+            name="team",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                on_delete=django.db.models.deletion.CASCADE, to="sentry.Team"
+            ),
+        ),
+        migrations.AlterUniqueTogether(
+            name="projectplatform",
+            unique_together={("project_id", "platform")},
+        ),
+        migrations.AddField(
+            model_name="project",
+            name="teams",
+            field=models.ManyToManyField(
+                related_name="teams", through="sentry.ProjectTeam", to="sentry.Team"
+            ),
+        ),
+        migrations.AddField(
+            model_name="processingissue",
+            name="project",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                on_delete=django.db.models.deletion.CASCADE, to="sentry.Project"
+            ),
+        ),
+        migrations.AlterUniqueTogether(
+            name="platformexternalissue",
+            unique_together={("group_id", "service_type")},
+        ),
+        migrations.AddField(
+            model_name="organizationmemberteam",
+            name="team",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                on_delete=django.db.models.deletion.CASCADE, to="sentry.Team"
+            ),
+        ),
+        migrations.AddField(
+            model_name="organizationmember",
+            name="teams",
+            field=models.ManyToManyField(
+                blank=True, through="sentry.OrganizationMemberTeam", to="sentry.Team"
+            ),
+        ),
+        migrations.AddField(
+            model_name="organizationmember",
+            name="user",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                blank=True,
+                null=True,
+                on_delete=django.db.models.deletion.CASCADE,
+                related_name="sentry_orgmember_set",
+                to=settings.AUTH_USER_MODEL,
+            ),
+        ),
+        migrations.AddField(
+            model_name="organizationaccessrequest",
+            name="member",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                on_delete=django.db.models.deletion.CASCADE, to="sentry.OrganizationMember"
+            ),
+        ),
+        migrations.AddField(
+            model_name="organizationaccessrequest",
+            name="team",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                on_delete=django.db.models.deletion.CASCADE, to="sentry.Team"
+            ),
+        ),
+        migrations.AddField(
+            model_name="organization",
+            name="members",
+            field=models.ManyToManyField(
+                related_name="org_memberships",
+                through="sentry.OrganizationMember",
+                to=settings.AUTH_USER_MODEL,
+            ),
+        ),
+        migrations.AddField(
+            model_name="monitorcheckin",
+            name="location",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                null=True, on_delete=django.db.models.deletion.CASCADE, to="sentry.MonitorLocation"
+            ),
+        ),
+        migrations.AddField(
+            model_name="monitorcheckin",
+            name="monitor",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                on_delete=django.db.models.deletion.CASCADE, to="sentry.Monitor"
+            ),
+        ),
+        migrations.AlterIndexTogether(
+            name="monitor",
+            index_together={("type", "next_checkin")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="latestrelease",
+            unique_together={("repository_id", "environment_id")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="integrationexternalproject",
+            unique_together={("organization_integration_id", "external_id")},
+        ),
+        migrations.AddField(
+            model_name="integration",
+            name="organizations",
+            field=models.ManyToManyField(
+                related_name="integrations",
+                through="sentry.OrganizationIntegration",
+                to="sentry.Organization",
+            ),
+        ),
+        migrations.AddField(
+            model_name="integration",
+            name="projects",
+            field=models.ManyToManyField(
+                related_name="integrations",
+                through="sentry.ProjectIntegration",
+                to="sentry.Project",
+            ),
+        ),
+        migrations.AlterUniqueTogether(
+            name="identityprovider",
+            unique_together={("type", "external_id")},
+        ),
+        migrations.AddField(
+            model_name="identity",
+            name="idp",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                on_delete=django.db.models.deletion.CASCADE, to="sentry.IdentityProvider"
+            ),
+        ),
+        migrations.AddField(
+            model_name="identity",
+            name="user",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
+            ),
+        ),
+        migrations.AddField(
+            model_name="grouptombstone",
+            name="project",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                on_delete=django.db.models.deletion.CASCADE, to="sentry.Project"
+            ),
+        ),
+        migrations.AddField(
+            model_name="groupsubscription",
+            name="project",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                on_delete=django.db.models.deletion.CASCADE,
+                related_name="subscription_set",
+                to="sentry.Project",
+            ),
+        ),
+        migrations.AddField(
+            model_name="groupsubscription",
+            name="user",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
+            ),
+        ),
+        migrations.AddField(
+            model_name="groupshare",
+            name="project",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                on_delete=django.db.models.deletion.CASCADE, to="sentry.Project"
+            ),
+        ),
+        migrations.AddField(
+            model_name="groupshare",
+            name="user",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
+            ),
+        ),
+        migrations.AddField(
+            model_name="groupseen",
+            name="project",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                on_delete=django.db.models.deletion.CASCADE, to="sentry.Project"
+            ),
+        ),
+        migrations.AddField(
+            model_name="groupseen",
+            name="user",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                db_index=False,
+                on_delete=django.db.models.deletion.CASCADE,
+                to=settings.AUTH_USER_MODEL,
+            ),
+        ),
+        migrations.AddField(
+            model_name="grouprulestatus",
+            name="project",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                on_delete=django.db.models.deletion.CASCADE, to="sentry.Project"
+            ),
+        ),
+        migrations.AddField(
+            model_name="grouprulestatus",
+            name="rule",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                on_delete=django.db.models.deletion.CASCADE, to="sentry.Rule"
+            ),
+        ),
+        migrations.AddField(
+            model_name="groupresolution",
+            name="release",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                on_delete=django.db.models.deletion.CASCADE, to="sentry.Release"
+            ),
+        ),
+        migrations.AlterUniqueTogether(
+            name="grouprelease",
+            unique_together={("group_id", "release_id", "environment")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="grouplink",
+            unique_together={("group_id", "linked_type", "linked_id")},
+        ),
+        migrations.AddField(
+            model_name="grouphash",
+            name="project",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                null=True, on_delete=django.db.models.deletion.CASCADE, to="sentry.Project"
+            ),
+        ),
+        migrations.AddField(
+            model_name="groupenvironment",
+            name="first_release",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                db_constraint=False,
+                null=True,
+                on_delete=django.db.models.deletion.DO_NOTHING,
+                to="sentry.Release",
+            ),
+        ),
+        migrations.AddField(
+            model_name="groupenvironment",
+            name="group",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                db_constraint=False, on_delete=django.db.models.deletion.CASCADE, to="sentry.Group"
+            ),
+        ),
+        migrations.AddField(
+            model_name="groupemailthread",
+            name="project",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                on_delete=django.db.models.deletion.CASCADE,
+                related_name="groupemail_set",
+                to="sentry.Project",
+            ),
+        ),
+        migrations.AlterUniqueTogether(
+            name="groupcommitresolution",
+            unique_together={("group_id", "commit_id")},
+        ),
+        migrations.AddField(
+            model_name="groupbookmark",
+            name="project",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                on_delete=django.db.models.deletion.CASCADE,
+                related_name="bookmark_set",
+                to="sentry.Project",
+            ),
+        ),
+        migrations.AddField(
+            model_name="groupbookmark",
+            name="user",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                on_delete=django.db.models.deletion.CASCADE,
+                related_name="sentry_bookmark_set",
+                to=settings.AUTH_USER_MODEL,
+            ),
+        ),
+        migrations.AddField(
+            model_name="groupassignee",
+            name="project",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                on_delete=django.db.models.deletion.CASCADE,
+                related_name="assignee_set",
+                to="sentry.Project",
+            ),
+        ),
+        migrations.AddField(
+            model_name="groupassignee",
+            name="team",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                null=True,
+                on_delete=django.db.models.deletion.CASCADE,
+                related_name="sentry_assignee_set",
+                to="sentry.Team",
+            ),
+        ),
+        migrations.AddField(
+            model_name="groupassignee",
+            name="user",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                null=True,
+                on_delete=django.db.models.deletion.CASCADE,
+                related_name="sentry_assignee_set",
+                to=settings.AUTH_USER_MODEL,
+            ),
+        ),
+        migrations.AddField(
+            model_name="group",
+            name="first_release",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                null=True, on_delete=django.db.models.deletion.PROTECT, to="sentry.Release"
+            ),
+        ),
+        migrations.AddField(
+            model_name="group",
+            name="project",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                null=True, on_delete=django.db.models.deletion.CASCADE, to="sentry.Project"
+            ),
+        ),
+        migrations.AddField(
+            model_name="fileblobowner",
+            name="organization",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                on_delete=django.db.models.deletion.CASCADE, to="sentry.Organization"
+            ),
+        ),
+        migrations.AddField(
+            model_name="file",
+            name="blob",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                null=True,
+                on_delete=django.db.models.deletion.CASCADE,
+                related_name="legacy_blob",
+                to="sentry.FileBlob",
+            ),
+        ),
+        migrations.AddField(
+            model_name="file",
+            name="blobs",
+            field=models.ManyToManyField(through="sentry.FileBlobIndex", to="sentry.FileBlob"),
+        ),
+        migrations.AddField(
+            model_name="featureadoption",
+            name="organization",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                on_delete=django.db.models.deletion.CASCADE, to="sentry.Organization"
+            ),
+        ),
+        migrations.AlterUniqueTogether(
+            name="externalissue",
+            unique_together={("organization_id", "integration_id", "key")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="eventuser",
+            unique_together={("project_id", "ident"), ("project_id", "hash")},
+        ),
+        migrations.AlterIndexTogether(
+            name="eventuser",
+            index_together={
+                ("project_id", "username"),
+                ("project_id", "email"),
+                ("project_id", "ip_address"),
+            },
+        ),
+        migrations.AddField(
+            model_name="eventprocessingissue",
+            name="processing_issue",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                on_delete=django.db.models.deletion.CASCADE, to="sentry.ProcessingIssue"
+            ),
+        ),
+        migrations.AddField(
+            model_name="eventprocessingissue",
+            name="raw_event",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                on_delete=django.db.models.deletion.CASCADE, to="sentry.RawEvent"
+            ),
+        ),
+        migrations.AddField(
+            model_name="eventattachment",
+            name="file",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                on_delete=django.db.models.deletion.CASCADE, to="sentry.File"
+            ),
+        ),
+        migrations.AddField(
+            model_name="environmentproject",
+            name="project",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                on_delete=django.db.models.deletion.CASCADE, to="sentry.Project"
+            ),
+        ),
+        migrations.AddField(
+            model_name="environment",
+            name="projects",
+            field=models.ManyToManyField(through="sentry.EnvironmentProject", to="sentry.Project"),
+        ),
+        migrations.AddField(
+            model_name="distribution",
+            name="release",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                on_delete=django.db.models.deletion.CASCADE, to="sentry.Release"
+            ),
+        ),
+        migrations.AddField(
+            model_name="discoversavedqueryproject",
+            name="project",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                on_delete=django.db.models.deletion.CASCADE, to="sentry.Project"
+            ),
+        ),
+        migrations.AddField(
+            model_name="discoversavedquery",
+            name="organization",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                on_delete=django.db.models.deletion.CASCADE, to="sentry.Organization"
+            ),
+        ),
+        migrations.AddField(
+            model_name="discoversavedquery",
+            name="projects",
+            field=models.ManyToManyField(
+                through="sentry.DiscoverSavedQueryProject", to="sentry.Project"
+            ),
+        ),
+        migrations.AddField(
+            model_name="deploy",
+            name="release",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                on_delete=django.db.models.deletion.CASCADE, to="sentry.Release"
+            ),
+        ),
+        migrations.AddField(
+            model_name="dashboard",
+            name="organization",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                on_delete=django.db.models.deletion.CASCADE, to="sentry.Organization"
+            ),
+        ),
+        migrations.AddField(
+            model_name="counter",
+            name="project",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                on_delete=django.db.models.deletion.CASCADE, to="sentry.Project", unique=True
+            ),
+        ),
+        migrations.AlterUniqueTogether(
+            name="commitauthor",
+            unique_together={("organization_id", "email"), ("organization_id", "external_id")},
+        ),
+        migrations.AddField(
+            model_name="commit",
+            name="author",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                null=True, on_delete=django.db.models.deletion.CASCADE, to="sentry.CommitAuthor"
+            ),
+        ),
+        migrations.AddField(
+            model_name="authprovider",
+            name="default_teams",
+            field=models.ManyToManyField(blank=True, to="sentry.Team"),
+        ),
+        migrations.AddField(
+            model_name="authprovider",
+            name="organization",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                on_delete=django.db.models.deletion.CASCADE, to="sentry.Organization", unique=True
+            ),
+        ),
+        migrations.AddField(
+            model_name="authidentity",
+            name="auth_provider",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                on_delete=django.db.models.deletion.CASCADE, to="sentry.AuthProvider"
+            ),
+        ),
+        migrations.AddField(
+            model_name="authidentity",
+            name="user",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
+            ),
+        ),
+        migrations.AddField(
+            model_name="auditlogentry",
+            name="organization",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                on_delete=django.db.models.deletion.CASCADE, to="sentry.Organization"
+            ),
+        ),
+        migrations.AddField(
+            model_name="auditlogentry",
+            name="target_user",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                blank=True,
+                null=True,
+                on_delete=django.db.models.deletion.CASCADE,
+                related_name="audit_targets",
+                to=settings.AUTH_USER_MODEL,
+            ),
+        ),
+        migrations.AddField(
+            model_name="apikey",
+            name="organization",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                on_delete=django.db.models.deletion.CASCADE,
+                related_name="key_set",
+                to="sentry.Organization",
+            ),
+        ),
+        migrations.AddField(
+            model_name="activity",
+            name="group",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                null=True, on_delete=django.db.models.deletion.CASCADE, to="sentry.Group"
+            ),
+        ),
+        migrations.AddField(
+            model_name="activity",
+            name="project",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                on_delete=django.db.models.deletion.CASCADE, to="sentry.Project"
+            ),
+        ),
+        migrations.AddField(
+            model_name="activity",
+            name="user",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
+            ),
+        ),
+        migrations.AlterUniqueTogether(
+            name="userreport",
+            unique_together={("project", "event_id")},
+        ),
+        migrations.AlterIndexTogether(
+            name="userreport",
+            index_together={("project", "event_id"), ("project", "date_added")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="userpermission",
+            unique_together={("user", "permission")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="useroption",
+            unique_together={("user", "organization", "key"), ("user", "project", "key")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="userip",
+            unique_together={("user", "ip_address")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="useremail",
+            unique_together={("user", "email")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="team",
+            unique_together={("organization", "slug")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="servicehookproject",
+            unique_together={("service_hook", "project_id")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="savedsearchuserdefault",
+            unique_together={("project", "user")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="savedsearch",
+            unique_together={("project", "name"), ("organization", "owner", "type")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="reprocessingreport",
+            unique_together={("project", "event_id")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="releaseprojectenvironment",
+            unique_together={("project", "release", "environment")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="releaseproject",
+            unique_together={("project", "release")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="releaseheadcommit",
+            unique_together={("repository_id", "release")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="releasefile",
+            unique_together={("release", "ident")},
+        ),
+        migrations.AlterIndexTogether(
+            name="releasefile",
+            index_together={("release", "name")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="releaseenvironment",
+            unique_together={("organization", "release", "environment")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="releasecommit",
+            unique_together={("release", "commit"), ("release", "order")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="release",
+            unique_together={("organization", "version")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="recentsearch",
+            unique_together={("user", "organization", "type", "query_hash")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="rawevent",
+            unique_together={("project", "event_id")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="pullrequestcommit",
+            unique_together={("pull_request", "commit")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="pullrequest",
+            unique_together={("repository_id", "key")},
+        ),
+        migrations.AlterIndexTogether(
+            name="pullrequest",
+            index_together={
+                ("repository_id", "date_added"),
+                ("organization_id", "merge_commit_sha"),
+            },
+        ),
+        migrations.AlterUniqueTogether(
+            name="promptsactivity",
+            unique_together={("user", "feature", "organization_id", "project_id")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="projectteam",
+            unique_together={("project", "team")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="projectredirect",
+            unique_together={("organization", "redirect_slug")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="projectoption",
+            unique_together={("project", "key")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="projectintegration",
+            unique_together={("project", "integration")},
+        ),
+        migrations.AlterIndexTogether(
+            name="projectdebugfile",
+            index_together={("project", "debug_id"), ("project", "code_id")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="projectbookmark",
+            unique_together={("project", "user")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="project",
+            unique_together={("organization", "slug")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="processingissue",
+            unique_together={("project", "checksum", "type")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="organizationoption",
+            unique_together={("organization", "key")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="organizationonboardingtask",
+            unique_together={("organization", "task")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="organizationmemberteam",
+            unique_together={("team", "organizationmember")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="organizationmember",
+            unique_together={("organization", "user"), ("organization", "email")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="organizationintegration",
+            unique_together={("organization", "integration")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="organizationaccessrequest",
+            unique_together={("team", "member")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="integration",
+            unique_together={("provider", "external_id")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="identity",
+            unique_together={("idp", "user"), ("idp", "external_id")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="groupsubscription",
+            unique_together={("group", "user")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="groupseen",
+            unique_together={("user", "group")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="grouprulestatus",
+            unique_together={("rule", "group")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="groupmeta",
+            unique_together={("group", "key")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="grouphash",
+            unique_together={("project", "hash")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="groupenvironment",
+            unique_together={("group", "environment")},
+        ),
+        migrations.AlterIndexTogether(
+            name="groupenvironment",
+            index_together={("environment", "first_release")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="groupemailthread",
+            unique_together={("email", "msgid"), ("email", "group")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="groupbookmark",
+            unique_together={("project", "user", "group")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="group",
+            unique_together={("project", "short_id")},
+        ),
+        migrations.AlterIndexTogether(
+            name="group",
+            index_together={("project", "first_release")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="fileblobowner",
+            unique_together={("blob", "organization")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="fileblobindex",
+            unique_together={("file", "blob", "offset")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="featureadoption",
+            unique_together={("organization", "feature_id")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="eventprocessingissue",
+            unique_together={("raw_event", "processing_issue")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="eventattachment",
+            unique_together={("project_id", "event_id", "file")},
+        ),
+        migrations.AlterIndexTogether(
+            name="eventattachment",
+            index_together={("project_id", "date_added")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="environmentproject",
+            unique_together={("project", "environment")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="environment",
+            unique_together={("organization_id", "name")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="distribution",
+            unique_together={("release", "name")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="discoversavedqueryproject",
+            unique_together={("project", "discover_saved_query")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="dashboard",
+            unique_together={("organization", "title")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="commitfilechange",
+            unique_together={("commit", "filename")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="commit",
+            unique_together={("repository_id", "key")},
+        ),
+        migrations.AlterIndexTogether(
+            name="commit",
+            index_together={("repository_id", "date_added")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="broadcastseen",
+            unique_together={("broadcast", "user")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="authidentity",
+            unique_together={("auth_provider", "ident"), ("auth_provider", "user")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="authenticator",
+            unique_together={("user", "type")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="assistantactivity",
+            unique_together={("user", "guide_id")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="apiauthorization",
+            unique_together={("user", "application")},
+        ),
+        migrations.RunSQL(
+            sql="\n        create or replace function sentry_increment_project_counter(\n                project bigint, delta int) returns int as $$\n            declare\n            new_val int;\n            begin\n            loop\n                update sentry_projectcounter set value = value + delta\n                where project_id = project\n                returning value into new_val;\n                if found then\n                return new_val;\n                end if;\n                begin\n                insert into sentry_projectcounter(project_id, value)\n                    values (project, delta)\n                    returning value into new_val;\n                return new_val;\n                exception when unique_violation then\n                end;\n            end loop;\n            end\n            $$ language plpgsql;\n        ",
+        ),
+        migrations.RunSQL(
+            sql="\n        CREATE UNIQUE INDEX sentry_savedsearch_is_global_6793a2f9e1b59b95\n        ON sentry_savedsearch USING btree (is_global, name)\n        WHERE is_global\n        ",
+        ),
+        migrations.RunSQL(
+            sql="\n        CREATE UNIQUE INDEX sentry_savedsearch_organization_id_313a24e907cdef99\n        ON sentry_savedsearch USING btree (organization_id, name, type)\n        WHERE (owner_id IS NULL);\n        ",
+        ),
+        migrations.CreateModel(
+            name="AlertRule",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("name", models.TextField()),
+                ("status", models.SmallIntegerField(default=0)),
+                ("include_all_projects", models.BooleanField(default=False)),
+                ("threshold_period", models.IntegerField()),
+                ("date_modified", models.DateTimeField(default=django.utils.timezone.now)),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+            ],
+            options={
+                "db_table": "sentry_alertrule",
+            },
+        ),
+        migrations.CreateModel(
+            name="AlertRuleExcludedProjects",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+                (
+                    "alert_rule",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        db_index=False,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to="sentry.AlertRule",
+                    ),
+                ),
+                (
+                    "project",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        db_constraint=False,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to="sentry.Project",
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_alertruleexcludedprojects",
+            },
+        ),
+        migrations.CreateModel(
+            name="AlertRuleTrigger",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("label", models.TextField()),
+                ("threshold_type", models.SmallIntegerField()),
+                ("alert_threshold", models.IntegerField()),
+                ("resolve_threshold", models.IntegerField(null=True)),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+                (
+                    "alert_rule",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.AlertRule"
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_alertruletrigger",
+            },
+        ),
+        migrations.CreateModel(
+            name="AlertRuleTriggerExclusion",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+                (
+                    "alert_rule_trigger",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE,
+                        related_name="exclusions",
+                        to="sentry.AlertRuleTrigger",
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_alertruletriggerexclusion",
+            },
+        ),
+        migrations.CreateModel(
+            name="Incident",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("identifier", models.IntegerField()),
+                (
+                    "detection_uuid",
+                    sentry.db.models.fields.uuid.UUIDField(db_index=True, max_length=32, null=True),
+                ),
+                ("status", models.PositiveSmallIntegerField(default=1)),
+                ("type", models.PositiveSmallIntegerField(default=1)),
+                ("title", models.TextField()),
+                ("query", models.TextField()),
+                ("date_started", models.DateTimeField(default=django.utils.timezone.now)),
+                ("date_detected", models.DateTimeField(default=django.utils.timezone.now)),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+                ("date_closed", models.DateTimeField(null=True)),
+                (
+                    "alert_rule",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        null=True,
+                        on_delete=django.db.models.deletion.SET_NULL,
+                        to="sentry.AlertRule",
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_incident",
+            },
+        ),
+        migrations.CreateModel(
+            name="IncidentActivity",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("type", models.IntegerField()),
+                ("value", models.TextField(null=True)),
+                ("previous_value", models.TextField(null=True)),
+                ("comment", models.TextField(null=True)),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+            ],
+            options={
+                "db_table": "sentry_incidentactivity",
+            },
+        ),
+        migrations.CreateModel(
+            name="IncidentProject",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                (
+                    "incident",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Incident"
+                    ),
+                ),
+                (
+                    "project",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        db_constraint=False,
+                        db_index=False,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to="sentry.Project",
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_incidentproject",
+            },
+        ),
+        migrations.CreateModel(
+            name="IncidentSeen",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("last_seen", models.DateTimeField(default=django.utils.timezone.now)),
+                (
+                    "incident",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Incident"
+                    ),
+                ),
+                (
+                    "user",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        db_index=False,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to=settings.AUTH_USER_MODEL,
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_incidentseen",
+            },
+        ),
+        migrations.CreateModel(
+            name="IncidentSnapshot",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("unique_users", models.IntegerField()),
+                ("total_events", models.IntegerField()),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+            ],
+            options={
+                "db_table": "sentry_incidentsnapshot",
+            },
+        ),
+        migrations.CreateModel(
+            name="IncidentSubscription",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+                (
+                    "incident",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        db_index=False,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to="sentry.Incident",
+                    ),
+                ),
+                (
+                    "user",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_incidentsubscription",
+            },
+        ),
+        migrations.CreateModel(
+            name="IncidentTrigger",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("status", models.SmallIntegerField()),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+                (
+                    "alert_rule_trigger",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.AlertRuleTrigger"
+                    ),
+                ),
+                (
+                    "incident",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        db_index=False,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to="sentry.Incident",
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_incidenttrigger",
+            },
+        ),
+        migrations.CreateModel(
+            name="IntegrationFeature",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("user_description", models.TextField(null=True)),
+                ("feature", sentry.db.models.fields.bounded.BoundedPositiveIntegerField(default=0)),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+            ],
+            options={
+                "db_table": "sentry_integrationfeature",
+            },
+        ),
+        migrations.CreateModel(
+            name="PagerDutyService",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("integration_key", models.CharField(max_length=255)),
+                ("service_name", models.CharField(max_length=255)),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+                (
+                    "organization_integration",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to="sentry.OrganizationIntegration",
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_pagerdutyservice",
+            },
+        ),
+        migrations.CreateModel(
+            name="QuerySubscription",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("type", models.TextField()),
+                ("subscription_id", models.TextField(unique=True)),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+                (
+                    "project",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        db_constraint=False,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to="sentry.Project",
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_querysubscription",
+            },
+        ),
+        migrations.CreateModel(
+            name="SentryAppInstallationToken",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                (
+                    "api_token",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.ApiToken"
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_sentryappinstallationtoken",
+            },
+        ),
+        migrations.CreateModel(
+            name="TimeSeriesSnapshot",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("start", models.DateTimeField()),
+                ("end", models.DateTimeField()),
+                ("values", sentry.db.models.fields.array.ArrayField(null=True)),
+                ("period", models.IntegerField()),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+            ],
+            options={
+                "db_table": "sentry_timeseriessnapshot",
+            },
+        ),
+        migrations.AddField(
+            model_name="broadcast",
+            name="cta",
+            field=models.CharField(blank=True, max_length=256, null=True),
+        ),
+        migrations.AddField(
+            model_name="groupredirect",
+            name="organization_id",
+            field=sentry.db.models.fields.bounded.BoundedBigIntegerField(null=True),
+        ),
+        migrations.AddField(
+            model_name="groupredirect",
+            name="previous_project_slug",
+            field=models.SlugField(null=True),
+        ),
+        migrations.AddField(
+            model_name="groupredirect",
+            name="previous_short_id",
+            field=sentry.db.models.fields.bounded.BoundedBigIntegerField(null=True),
+        ),
+        migrations.AddField(
+            model_name="organizationmember",
+            name="invite_status",
+            field=models.PositiveSmallIntegerField(default=0, null=True),
+        ),
+        migrations.AddField(
+            model_name="organizationmember",
+            name="inviter",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                blank=True,
+                null=True,
+                on_delete=django.db.models.deletion.CASCADE,
+                related_name="sentry_inviter_set",
+                to=settings.AUTH_USER_MODEL,
+            ),
+        ),
+        migrations.AddField(
+            model_name="projectownership",
+            name="auto_assignment",
+            field=models.BooleanField(default=False),
+        ),
+        migrations.AddField(
+            model_name="sentryapp",
+            name="verify_install",
+            field=models.BooleanField(default=True),
+        ),
+        migrations.AddField(
+            model_name="sentryappinstallation",
+            name="api_token",
+            field=models.OneToOneField(
+                null=True,
+                on_delete=django.db.models.deletion.SET_NULL,
+                related_name="sentry_app_installation",
+                to="sentry.ApiToken",
+            ),
+        ),
+        migrations.AddField(
+            model_name="sentryappinstallation",
+            name="status",
+            field=sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
+                db_index=True, default=0
+            ),
+        ),
+        migrations.AlterField(
+            model_name="auditlogentry",
+            name="event",
+            field=sentry.db.models.fields.bounded.BoundedPositiveIntegerField(),
+        ),
+        migrations.AlterField(
+            model_name="commitfilechange",
+            name="filename",
+            field=models.CharField(max_length=255),
+        ),
+        migrations.AlterField(
+            model_name="discoversavedquery",
+            name="query",
+            field=sentry.db.models.fields.jsonfield.JSONField(default=dict),
+        ),
+        migrations.AlterField(
+            model_name="externalissue",
+            name="metadata",
+            field=sentry.db.models.fields.jsonfield.JSONField(null=True),
+        ),
+        migrations.AlterField(
+            model_name="featureadoption",
+            name="data",
+            field=sentry.db.models.fields.jsonfield.JSONField(default=dict),
+        ),
+        migrations.AlterField(
+            model_name="file",
+            name="headers",
+            field=sentry.db.models.fields.jsonfield.JSONField(default=dict),
+        ),
+        migrations.AlterField(
+            model_name="group",
+            name="project",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                on_delete=django.db.models.deletion.CASCADE, to="sentry.Project"
+            ),
+        ),
+        migrations.AlterField(
+            model_name="grouplink",
+            name="data",
+            field=sentry.db.models.fields.jsonfield.JSONField(default=dict),
+        ),
+        migrations.AlterField(
+            model_name="groupsnooze",
+            name="state",
+            field=sentry.db.models.fields.jsonfield.JSONField(null=True),
+        ),
+        migrations.AlterField(
+            model_name="organization",
+            name="default_role",
+            field=models.CharField(default="member", max_length=32),
+        ),
+        migrations.AlterField(
+            model_name="organizationmember",
+            name="role",
+            field=models.CharField(default="member", max_length=32),
+        ),
+        migrations.AlterField(
+            model_name="organizationonboardingtask",
+            name="data",
+            field=sentry.db.models.fields.jsonfield.JSONField(default=dict),
+        ),
+        migrations.AlterField(
+            model_name="projectdebugfile",
+            name="data",
+            field=sentry.db.models.fields.jsonfield.JSONField(null=True),
+        ),
+        migrations.AlterField(
+            model_name="projectkey",
+            name="data",
+            field=sentry.db.models.fields.jsonfield.JSONField(default=dict),
+        ),
+        migrations.AlterField(
+            model_name="projectownership",
+            name="schema",
+            field=sentry.db.models.fields.jsonfield.JSONField(null=True),
+        ),
+        migrations.AlterField(
+            model_name="promptsactivity",
+            name="data",
+            field=sentry.db.models.fields.jsonfield.JSONField(default={}),
+        ),
+        migrations.AlterField(
+            model_name="release",
+            name="data",
+            field=sentry.db.models.fields.jsonfield.JSONField(default={}),
+        ),
+        migrations.AlterField(
+            model_name="release",
+            name="project_id",
+            field=sentry.db.models.fields.bounded.BoundedPositiveIntegerField(null=True),
+        ),
+        migrations.AlterField(
+            model_name="releasefile",
+            name="project_id",
+            field=sentry.db.models.fields.bounded.BoundedPositiveIntegerField(null=True),
+        ),
+        migrations.AlterField(
+            model_name="repository",
+            name="config",
+            field=sentry.db.models.fields.jsonfield.JSONField(default=dict),
+        ),
+        migrations.AlterField(
+            model_name="scheduleddeletion",
+            name="data",
+            field=sentry.db.models.fields.jsonfield.JSONField(default={}),
+        ),
+        migrations.AlterField(
+            model_name="scheduledjob",
+            name="payload",
+            field=sentry.db.models.fields.jsonfield.JSONField(default=dict),
+        ),
+        migrations.AlterField(
+            model_name="sentryapp",
+            name="status",
+            field=sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
+                db_index=True, default=0
+            ),
+        ),
+        migrations.AlterField(
+            model_name="sentryapp",
+            name="webhook_url",
+            field=models.URLField(null=True),
+        ),
+        migrations.AlterUniqueTogether(
+            name="groupassignee",
+            unique_together={("project", "group")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="groupredirect",
+            unique_together={("organization_id", "previous_short_id", "previous_project_slug")},
+        ),
+        migrations.AlterIndexTogether(
+            name="group",
+            index_together={("project", "first_release"), ("project", "id")},
+        ),
+        migrations.AddField(
+            model_name="sentryappinstallationtoken",
+            name="sentry_app_installation",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                on_delete=django.db.models.deletion.CASCADE, to="sentry.SentryAppInstallation"
+            ),
+        ),
+        migrations.AddField(
+            model_name="integrationfeature",
+            name="sentry_app",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                on_delete=django.db.models.deletion.CASCADE, to="sentry.SentryApp"
+            ),
+        ),
+        migrations.AddField(
+            model_name="incidentsnapshot",
+            name="event_stats_snapshot",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                on_delete=django.db.models.deletion.CASCADE, to="sentry.TimeSeriesSnapshot"
+            ),
+        ),
+        migrations.AddField(
+            model_name="incidentsnapshot",
+            name="incident",
+            field=models.OneToOneField(
+                on_delete=django.db.models.deletion.CASCADE, to="sentry.Incident"
+            ),
+        ),
+        migrations.AddField(
+            model_name="incidentactivity",
+            name="incident",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                on_delete=django.db.models.deletion.CASCADE, to="sentry.Incident"
+            ),
+        ),
+        migrations.AddField(
+            model_name="incidentactivity",
+            name="user",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
+            ),
+        ),
+        migrations.AddField(
+            model_name="incident",
+            name="organization",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                on_delete=django.db.models.deletion.CASCADE, to="sentry.Organization"
+            ),
+        ),
+        migrations.AddField(
+            model_name="incident",
+            name="projects",
+            field=models.ManyToManyField(
+                related_name="incidents", through="sentry.IncidentProject", to="sentry.Project"
+            ),
+        ),
+        migrations.AddField(
+            model_name="alertruletriggerexclusion",
+            name="query_subscription",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                on_delete=django.db.models.deletion.CASCADE, to="sentry.QuerySubscription"
+            ),
+        ),
+        migrations.AddField(
+            model_name="alertruletrigger",
+            name="triggered_incidents",
+            field=models.ManyToManyField(
+                related_name="triggers", through="sentry.IncidentTrigger", to="sentry.Incident"
+            ),
+        ),
+        migrations.AddField(
+            model_name="alertrule",
+            name="excluded_projects",
+            field=models.ManyToManyField(
+                related_name="alert_rule_exclusions",
+                through="sentry.AlertRuleExcludedProjects",
+                to="sentry.Project",
+            ),
+        ),
+        migrations.AddField(
+            model_name="alertrule",
+            name="organization",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                db_index=False,
+                null=True,
+                on_delete=django.db.models.deletion.CASCADE,
+                to="sentry.Organization",
+            ),
+        ),
+        migrations.AlterUniqueTogether(
+            name="sentryappinstallationtoken",
+            unique_together={("sentry_app_installation", "api_token")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="integrationfeature",
+            unique_together={("sentry_app", "feature")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="incidenttrigger",
+            unique_together={("incident", "alert_rule_trigger")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="incidentsubscription",
+            unique_together={("incident", "user")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="incidentseen",
+            unique_together={("user", "incident")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="incidentproject",
+            unique_together={("project", "incident")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="incident",
+            unique_together={("organization", "identifier")},
+        ),
+        migrations.AlterIndexTogether(
+            name="incident",
+            index_together={("alert_rule", "type", "status")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="alertruletriggerexclusion",
+            unique_together={("alert_rule_trigger", "query_subscription")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="alertruletrigger",
+            unique_together={("alert_rule", "label")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="alertruleexcludedprojects",
+            unique_together={("alert_rule", "project")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="alertrule",
+            unique_together={("organization", "name")},
+        ),
+        migrations.CreateModel(
+            name="AlertRuleTriggerAction",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("type", models.SmallIntegerField()),
+                ("target_type", models.SmallIntegerField()),
+                ("target_identifier", models.TextField(null=True)),
+                ("target_display", models.TextField(null=True)),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+                (
+                    "alert_rule_trigger",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.AlertRuleTrigger"
+                    ),
+                ),
+                (
+                    "integration",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        null=True,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to="sentry.Integration",
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_alertruletriggeraction",
+            },
+        ),
+        migrations.AlterField(
+            model_name="auditlogentry",
+            name="event",
+            field=sentry.db.models.fields.bounded.BoundedPositiveIntegerField(),
+        ),
+        migrations.AddField(
+            model_name="sentryapp",
+            name="date_published",
+            field=models.DateTimeField(blank=True, null=True),
+        ),
+        migrations.AlterField(
+            model_name="organization",
+            name="default_role",
+            field=models.CharField(default="member", max_length=32),
+        ),
+        migrations.AlterField(
+            model_name="organizationmember",
+            name="role",
+            field=models.CharField(default="member", max_length=32),
+        ),
+        migrations.AddField(
+            model_name="discoversavedquery",
+            name="version",
+            field=models.IntegerField(null=True),
+        ),
+        migrations.SeparateDatabaseAndState(
+            state_operations=[
+                migrations.AlterField(
+                    model_name="incidentsnapshot",
+                    name="incident",
+                    field=sentry.db.models.fields.onetoone.OneToOneCascadeDeletes(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Incident"
+                    ),
+                ),
+            ],
+        ),
+        migrations.RenameModel(
+            old_name="LatestRelease",
+            new_name="LatestRepoReleaseEnvironment",
+        ),
+        migrations.AddField(
+            model_name="organizationaccessrequest",
+            name="requester",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
+            ),
+        ),
+        migrations.CreateModel(
+            name="ExportedData",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+                ("date_finished", models.DateTimeField(null=True)),
+                ("date_expired", models.DateTimeField(null=True)),
+                ("storage_url", models.URLField(null=True)),
+                ("query_type", sentry.db.models.fields.bounded.BoundedPositiveIntegerField()),
+                ("query_info", sentry.db.models.fields.jsonfield.JSONField(default=dict)),
+                (
+                    "organization",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Organization"
+                    ),
+                ),
+                (
+                    "user",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_exporteddata",
+            },
+        ),
+        migrations.RemoveField(
+            model_name="exporteddata",
+            name="storage_url",
+        ),
+        migrations.AddField(
+            model_name="exporteddata",
+            name="file",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                db_constraint=False,
+                null=True,
+                on_delete=django.db.models.deletion.CASCADE,
+                to="sentry.File",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="project",
+            name="flags",
+            field=bitfield.models.BitField(
+                (
+                    ("has_releases", "This Project has sent release data"),
+                    ("has_sourcemaps", "This Project has processed source maps"),
+                ),
+                default=0,
+                null=True,
+            ),
+        ),
+        migrations.AlterField(
+            model_name="exporteddata",
+            name="query_type",
+            field=sentry.db.models.fields.bounded.BoundedPositiveIntegerField(),
+        ),
+        migrations.AddField(
+            model_name="incidenttrigger",
+            name="date_modified",
+            field=models.DateTimeField(default=django.utils.timezone.now),
+        ),
+        migrations.AlterField(
+            model_name="incident",
+            name="type",
+            field=models.PositiveSmallIntegerField(),
+        ),
+        migrations.AlterField(
+            model_name="exporteddata",
+            name="date_expired",
+            field=models.DateTimeField(db_index=True, null=True),
+        ),
+        migrations.AlterField(
+            model_name="exporteddata",
+            name="file",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                db_constraint=False,
+                null=True,
+                on_delete=django.db.models.deletion.SET_NULL,
+                to="sentry.File",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="exporteddata",
+            name="user",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL
+            ),
+        ),
+        migrations.SeparateDatabaseAndState(
+            state_operations=[
+                migrations.RemoveField(
+                    model_name="organizationonboardingtask",
+                    name="project_id",
+                ),
+                migrations.AddField(
+                    model_name="organizationonboardingtask",
+                    name="project",
+                    field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        db_constraint=False,
+                        null=True,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to="sentry.Project",
+                    ),
+                ),
+                migrations.AlterField(
+                    model_name="organizationonboardingtask",
+                    name="status",
+                    field=sentry.db.models.fields.bounded.BoundedPositiveIntegerField(),
+                ),
+                migrations.AlterField(
+                    model_name="organizationonboardingtask",
+                    name="task",
+                    field=sentry.db.models.fields.bounded.BoundedPositiveIntegerField(),
+                ),
+            ],
+        ),
+        migrations.AlterField(
+            model_name="exporteddata",
+            name="query_type",
+            field=sentry.db.models.fields.bounded.BoundedPositiveIntegerField(),
+        ),
+        migrations.AddField(
+            model_name="organizationonboardingtask",
+            name="completion_seen",
+            field=models.DateTimeField(null=True),
+        ),
+        migrations.CreateModel(
+            name="KeyTransaction",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("transaction", models.CharField(max_length=200)),
+                (
+                    "organization",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Organization"
+                    ),
+                ),
+                (
+                    "owner",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        null=True,
+                        on_delete=django.db.models.deletion.SET_NULL,
+                        to=settings.AUTH_USER_MODEL,
+                    ),
+                ),
+                (
+                    "project",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        db_constraint=False,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to="sentry.Project",
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_discoverkeytransaction",
+            },
+        ),
+        migrations.AlterUniqueTogether(
+            name="keytransaction",
+            unique_together={("project", "transaction")},
+        ),
+        migrations.AddField(
+            model_name="querysubscription",
+            name="status",
+            field=models.SmallIntegerField(default=0),
+        ),
+        migrations.AlterField(
+            model_name="querysubscription",
+            name="subscription_id",
+            field=models.TextField(null=True, unique=True),
+        ),
+        migrations.AlterField(
+            model_name="project",
+            name="flags",
+            field=bitfield.models.BitField(
+                (("has_releases", "This Project has sent release data"),), default=0, null=True
+            ),
+        ),
+        migrations.AlterField(
+            model_name="project",
+            name="flags",
+            field=bitfield.models.BitField(
+                (
+                    ("has_releases", "This Project has sent release data"),
+                    ("has_issue_alerts_targeting", "This Project has issue alerts targeting"),
+                ),
+                default=0,
+                null=True,
+            ),
+        ),
+        migrations.AlterField(
+            model_name="integrationfeature",
+            name="feature",
+            field=sentry.db.models.fields.bounded.BoundedPositiveIntegerField(default=0),
+        ),
+        migrations.SeparateDatabaseAndState(
+            database_operations=[
+                migrations.RunSQL(
+                    sql='\n                    CREATE INDEX CONCURRENTLY "sentry_eventattachment_project_id_date_added_fi_f3b0597f_idx" ON "sentry_eventattachment" ("project_id", "date_added", "file_id");\n                    ',
+                    reverse_sql='\n                        DROP INDEX CONCURRENTLY "sentry_eventattachment_project_id_date_added_fi_f3b0597f_idx";\n                        ',
+                ),
+            ],
+            state_operations=[
+                migrations.AlterIndexTogether(
+                    name="eventattachment",
+                    index_together={
+                        ("project_id", "date_added", "file"),
+                        ("project_id", "date_added"),
+                    },
+                ),
+            ],
+        ),
+        migrations.SeparateDatabaseAndState(
+            database_operations=[
+                migrations.RunSQL(
+                    sql="\n                    ALTER TABLE sentry_alertrule DROP CONSTRAINT IF EXISTS sentry_alertrule_organization_id_name_12c48b37_uniq;\n                    ",
+                    reverse_sql="DO $$\n                    BEGIN\n                        BEGIN\n                            ALTER TABLE sentry_alertrule ADD CONSTRAINT sentry_alertrule_organization_id_name_12c48b37_uniq UNIQUE (organization_id, name);\n                        EXCEPTION\n                            WHEN duplicate_table THEN\n                        END;\n                    END $$;\n                    ",
+                ),
+                migrations.RunSQL(
+                    sql="\n                    DROP INDEX CONCURRENTLY IF EXISTS sentry_alertrule_organization_id_name_12c48b37_uniq;\n                    ",
+                    reverse_sql="\n                    CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS sentry_alertrule_organization_id_name_12c48b37_uniq\n                    ON sentry_alertrule USING btree (organization_id, name);\n                    ",
+                ),
+                migrations.RunSQL(
+                    sql="\n                    CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS sentry_alertrule_status_active\n                    ON sentry_alertrule USING btree (organization_id, name, status)\n                    WHERE status = 0;\n                    ",
+                    reverse_sql="\n                    DROP INDEX CONCURRENTLY IF EXISTS sentry_alertrule_status_active;\n                    ",
+                ),
+            ],
+            state_operations=[
+                migrations.AlterUniqueTogether(
+                    name="alertrule",
+                    unique_together={("organization", "name", "status")},
+                ),
+            ],
+        ),
+        migrations.AlterField(
+            model_name="alertrule",
+            name="organization",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                null=True, on_delete=django.db.models.deletion.CASCADE, to="sentry.Organization"
+            ),
+        ),
+        migrations.AlterUniqueTogether(
+            name="keytransaction",
+            unique_together={("project", "owner", "transaction")},
+        ),
+        migrations.SeparateDatabaseAndState(
+            database_operations=[
+                migrations.RunSQL(
+                    sql="\n                    ALTER TABLE sentry_alertrule DROP CONSTRAINT IF EXISTS sentry_alertrule_organization_id_382634eccd5f9371_uniq;\n                    ",
+                    reverse_sql="DO $$\n                    BEGIN\n                        BEGIN\n                            ALTER TABLE sentry_alertrule ADD CONSTRAINT sentry_alertrule_organization_id_382634eccd5f9371_uniq UNIQUE (organization_id, name);\n                        EXCEPTION\n                            WHEN duplicate_table THEN\n                        END;\n                    END $$;\n                    ",
+                ),
+            ],
+        ),
+        migrations.AlterField(
+            model_name="project",
+            name="flags",
+            field=bitfield.models.BitField(
+                (
+                    ("has_releases", "This Project has sent release data"),
+                    ("has_issue_alerts_targeting", "This Project has issue alerts targeting"),
+                    ("has_transactions", "This Project has sent transactions"),
+                ),
+                default=0,
+                null=True,
+            ),
+        ),
+        migrations.AddField(
+            model_name="incident",
+            name="status_method",
+            field=models.PositiveSmallIntegerField(default=3),
+        ),
+        migrations.AlterModelOptions(
+            name="alertrule",
+            options={
+                "base_manager_name": "objects_with_snapshots",
+                "default_manager_name": "objects_with_snapshots",
+            },
+        ),
+        migrations.AlterModelManagers(
+            name="alertrule",
+            managers=[
+                ("objects_with_snapshots", django.db.models.manager.Manager()),
+            ],
+        ),
+        migrations.SeparateDatabaseAndState(
+            state_operations=[
+                migrations.AlterField(
+                    model_name="project",
+                    name="flags",
+                    field=bitfield.models.BitField(
+                        (
+                            ("has_releases", "This Project has sent release data"),
+                            (
+                                "has_issue_alerts_targeting",
+                                "This Project has issue alerts targeting",
+                            ),
+                            ("has_transactions", "This Project has sent transactions"),
+                        ),
+                        default=2,
+                        null=True,
+                    ),
+                ),
+            ],
+        ),
+        migrations.CreateModel(
+            name="PendingIncidentSnapshot",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                (
+                    "target_run_date",
+                    models.DateTimeField(db_index=True, default=django.utils.timezone.now),
+                ),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+                (
+                    "incident",
+                    sentry.db.models.fields.onetoone.OneToOneCascadeDeletes(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Incident"
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_pendingincidentsnapshot",
+            },
+        ),
+        migrations.AddField(
+            model_name="integration",
+            name="date_updated",
+            field=models.DateTimeField(default=django.utils.timezone.now),
+        ),
+        migrations.AddField(
+            model_name="integrationexternalproject",
+            name="date_updated",
+            field=models.DateTimeField(default=django.utils.timezone.now),
+        ),
+        migrations.AddField(
+            model_name="organizationintegration",
+            name="date_updated",
+            field=models.DateTimeField(default=django.utils.timezone.now),
+        ),
+        migrations.AddField(
+            model_name="pagerdutyservice",
+            name="date_updated",
+            field=models.DateTimeField(default=django.utils.timezone.now),
+        ),
+        migrations.CreateModel(
+            name="SnubaQuery",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("dataset", models.TextField()),
+                ("query", models.TextField()),
+                ("aggregate", models.TextField()),
+                ("time_window", models.IntegerField()),
+                ("resolution", models.IntegerField()),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+                (
+                    "environment",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        db_constraint=False,
+                        null=True,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to="sentry.Environment",
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_snubaquery",
+            },
+        ),
+        migrations.AddField(
+            model_name="alertrule",
+            name="snuba_query",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                null=True,
+                on_delete=django.db.models.deletion.CASCADE,
+                to="sentry.SnubaQuery",
+                unique=True,
+            ),
+        ),
+        migrations.AddField(
+            model_name="querysubscription",
+            name="snuba_query",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                null=True,
+                on_delete=django.db.models.deletion.CASCADE,
+                related_name="subscriptions",
+                to="sentry.SnubaQuery",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="featureadoption",
+            name="feature_id",
+            field=models.PositiveIntegerField(),
+        ),
+        migrations.AlterField(
+            model_name="incident",
+            name="alert_rule",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                on_delete=django.db.models.deletion.PROTECT, to="sentry.AlertRule"
+            ),
+        ),
+        migrations.AlterField(
+            model_name="auditlogentry",
+            name="event",
+            field=sentry.db.models.fields.bounded.BoundedPositiveIntegerField(),
+        ),
+        migrations.AlterField(
+            model_name="alertruletrigger",
+            name="alert_threshold",
+            field=models.FloatField(),
+        ),
+        migrations.AlterField(
+            model_name="alertruletrigger",
+            name="resolve_threshold",
+            field=models.FloatField(null=True),
+        ),
+        migrations.AlterField(
+            model_name="sentryapp",
+            name="webhook_url",
+            field=models.URLField(max_length=512, null=True),
+        ),
+        migrations.CreateModel(
+            name="ExportedDataBlob",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("offset", sentry.db.models.fields.bounded.BoundedBigIntegerField()),
+                (
+                    "blob",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        db_constraint=False,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to="sentry.FileBlob",
+                    ),
+                ),
+                (
+                    "data_export",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.ExportedData"
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_exporteddatablob",
+            },
+        ),
+        migrations.AlterUniqueTogether(
+            name="exporteddatablob",
+            unique_together={("data_export", "blob", "offset")},
+        ),
+        migrations.CreateModel(
+            name="SentryAppInstallationForProvider",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("date_updated", models.DateTimeField(default=django.utils.timezone.now)),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now, null=True)),
+                ("provider", models.CharField(max_length=64)),
+                (
+                    "organization",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Organization"
+                    ),
+                ),
+                (
+                    "sentry_app_installation",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to="sentry.SentryAppInstallation",
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_sentryappinstallationforprovider",
+            },
+        ),
+        migrations.AlterUniqueTogether(
+            name="sentryappinstallationforprovider",
+            unique_together={("provider", "organization")},
+        ),
+        migrations.RunSQL(
+            sql="ALTER TABLE sentry_timeseriessnapshot ALTER COLUMN values SET DATA TYPE float[] USING values::float[]",
+        ),
+        migrations.AddField(
+            model_name="alertrule",
+            name="resolve_threshold",
+            field=models.FloatField(null=True),
+        ),
+        migrations.AddField(
+            model_name="alertrule",
+            name="threshold_type",
+            field=models.SmallIntegerField(null=True),
+        ),
+        migrations.CreateModel(
+            name="AlertRuleActivity",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("type", models.IntegerField()),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+                (
+                    "alert_rule",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.AlertRule"
+                    ),
+                ),
+                (
+                    "previous_alert_rule",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        null=True,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        related_name="previous_alert_rule",
+                        to="sentry.AlertRule",
+                    ),
+                ),
+                (
+                    "user",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        null=True,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to=settings.AUTH_USER_MODEL,
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_alertruleactivity",
+            },
+        ),
+        migrations.AlterField(
+            model_name="alertruletrigger",
+            name="threshold_type",
+            field=models.SmallIntegerField(null=True),
+        ),
+        migrations.AlterField(
+            model_name="identity",
+            name="external_id",
+            field=models.TextField(),
+        ),
+        migrations.CreateModel(
+            name="RuleActivity",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("type", models.IntegerField()),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+                (
+                    "rule",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Rule"
+                    ),
+                ),
+                (
+                    "user",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        null=True,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to=settings.AUTH_USER_MODEL,
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_ruleactivity",
+            },
+        ),
+        migrations.AddField(
+            model_name="alertruletriggeraction",
+            name="sentry_app",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                null=True, on_delete=django.db.models.deletion.CASCADE, to="sentry.SentryApp"
+            ),
+        ),
+        migrations.AlterField(
+            model_name="organizationonboardingtask",
+            name="task",
+            field=sentry.db.models.fields.bounded.BoundedPositiveIntegerField(),
+        ),
+        migrations.AddField(
+            model_name="eventattachment",
+            name="type",
+            field=models.CharField(db_index=True, max_length=64, null=True),
+        ),
+        migrations.CreateModel(
+            name="RelayUsage",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("relay_id", models.CharField(max_length=64)),
+                ("version", models.CharField(default="0.0.1", max_length=32)),
+                ("first_seen", models.DateTimeField(default=django.utils.timezone.now)),
+                ("last_seen", models.DateTimeField(default=django.utils.timezone.now)),
+            ],
+            options={
+                "db_table": "sentry_relayusage",
+            },
+        ),
+        migrations.AlterField(
+            model_name="relay",
+            name="first_seen",
+            field=models.DateTimeField(default=None, null=True),
+        ),
+        migrations.AlterField(
+            model_name="relay",
+            name="is_internal",
+            field=models.NullBooleanField(default=None),
+        ),
+        migrations.AlterField(
+            model_name="relay",
+            name="last_seen",
+            field=models.DateTimeField(default=None, null=True),
+        ),
+        migrations.AlterUniqueTogether(
+            name="relayusage",
+            unique_together={("relay_id", "version")},
+        ),
+        migrations.SeparateDatabaseAndState(
+            state_operations=[
+                migrations.AlterField(
+                    model_name="project",
+                    name="flags",
+                    field=bitfield.models.BitField(
+                        (
+                            ("has_releases", "This Project has sent release data"),
+                            (
+                                "has_issue_alerts_targeting",
+                                "This Project has issue alerts targeting",
+                            ),
+                            ("has_transactions", "This Project has sent transactions"),
+                            ("has_alert_filters", "This Project has filters"),
+                        ),
+                        default=10,
+                        null=True,
+                    ),
+                ),
+            ],
+        ),
+        migrations.AddField(
+            model_name="relayusage",
+            name="public_key",
+            field=models.CharField(db_index=True, max_length=200, null=True),
+        ),
+        migrations.AlterField(
+            model_name="eventattachment",
+            name="type",
+            field=models.CharField(db_index=True, max_length=64),
+        ),
+        migrations.AlterField(
+            model_name="servicehook",
+            name="project_id",
+            field=sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
+                db_index=True, null=True
+            ),
+        ),
+        migrations.SeparateDatabaseAndState(
+            state_operations=[
+                migrations.AlterField(
+                    model_name="fileblobindex",
+                    name="blob",
+                    field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.PROTECT, to="sentry.FileBlob"
+                    ),
+                ),
+            ],
+        ),
+        migrations.AddField(
+            model_name="sentryapp",
+            name="creator_label",
+            field=models.TextField(null=True),
+        ),
+        migrations.AddField(
+            model_name="sentryapp",
+            name="creator_user",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                db_constraint=False,
+                null=True,
+                on_delete=django.db.models.deletion.SET_NULL,
+                to=settings.AUTH_USER_MODEL,
+            ),
+        ),
+        migrations.CreateModel(
+            name="SnubaQueryEventType",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("type", models.SmallIntegerField()),
+                (
+                    "snuba_query",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.SnubaQuery"
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_snubaqueryeventtype",
+            },
+        ),
+        migrations.AlterUniqueTogether(
+            name="snubaqueryeventtype",
+            unique_together={("snuba_query", "type")},
+        ),
+        migrations.CreateModel(
+            name="GroupInbox",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("reason", models.PositiveSmallIntegerField(default=0)),
+                ("reason_details", sentry.db.models.fields.jsonfield.JSONField(null=True)),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+                (
+                    "group",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        db_constraint=False,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to="sentry.Group",
+                        unique=True,
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_groupinbox",
+            },
+        ),
+        migrations.CreateModel(
+            name="RepositoryProjectPathConfig",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("date_updated", models.DateTimeField(default=django.utils.timezone.now)),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now, null=True)),
+                ("stack_root", models.TextField()),
+                ("source_root", models.TextField()),
+                ("default_branch", models.TextField(null=True)),
+                (
+                    "organization_integration",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to="sentry.OrganizationIntegration",
+                    ),
+                ),
+                (
+                    "project",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        db_constraint=False,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to="sentry.Project",
+                    ),
+                ),
+                (
+                    "repository",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Repository"
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_repositoryprojectpathconfig",
+            },
+        ),
+        migrations.AlterUniqueTogether(
+            name="repositoryprojectpathconfig",
+            unique_together={("project", "stack_root")},
+        ),
+        migrations.SeparateDatabaseAndState(
+            database_operations=[
+                migrations.RunSQL(
+                    sql='\n                    ALTER TABLE "sentry_projectdsymfile" ADD COLUMN "checksum" varchar(40) NULL;\n                    ',
+                    reverse_sql='\n                        ALTER TABLE "sentry_projectdsymfile" DROP COLUMN "checksum";\n                        ',
+                ),
+                migrations.RunSQL(
+                    sql='\n                    CREATE INDEX CONCURRENTLY "sentry_projectdsymfile_checksum_8fb028a8_idx" ON "sentry_projectdsymfile" ("checksum");\n                    ',
+                    reverse_sql='\n                        DROP INDEX CONCURRENTLY "sentry_projectdsymfile_checksum_8fb028a8_idx";\n                        ',
+                ),
+            ],
+            state_operations=[
+                migrations.AddField(
+                    model_name="projectdebugfile",
+                    name="checksum",
+                    field=models.CharField(db_index=True, max_length=40, null=True),
+                ),
+            ],
+        ),
+        migrations.AlterField(
+            model_name="activity",
+            name="type",
+            field=sentry.db.models.fields.bounded.BoundedPositiveIntegerField(),
+        ),
+        migrations.SeparateDatabaseAndState(
+            state_operations=[
+                migrations.AlterField(
+                    model_name="activity",
+                    name="user",
+                    field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        null=True,
+                        on_delete=django.db.models.deletion.SET_NULL,
+                        to=settings.AUTH_USER_MODEL,
+                    ),
+                ),
+                migrations.AlterField(
+                    model_name="alertruleactivity",
+                    name="user",
+                    field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        null=True,
+                        on_delete=django.db.models.deletion.SET_NULL,
+                        to=settings.AUTH_USER_MODEL,
+                    ),
+                ),
+                migrations.AlterField(
+                    model_name="auditlogentry",
+                    name="actor",
+                    field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        blank=True,
+                        null=True,
+                        on_delete=django.db.models.deletion.SET_NULL,
+                        related_name="audit_actors",
+                        to=settings.AUTH_USER_MODEL,
+                    ),
+                ),
+                migrations.AlterField(
+                    model_name="auditlogentry",
+                    name="target_user",
+                    field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        blank=True,
+                        null=True,
+                        on_delete=django.db.models.deletion.SET_NULL,
+                        related_name="audit_targets",
+                        to=settings.AUTH_USER_MODEL,
+                    ),
+                ),
+                migrations.AlterField(
+                    model_name="organizationmember",
+                    name="inviter",
+                    field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        blank=True,
+                        null=True,
+                        on_delete=django.db.models.deletion.SET_NULL,
+                        related_name="sentry_inviter_set",
+                        to=settings.AUTH_USER_MODEL,
+                    ),
+                ),
+                migrations.AlterField(
+                    model_name="organizationonboardingtask",
+                    name="user",
+                    field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        null=True,
+                        on_delete=django.db.models.deletion.SET_NULL,
+                        to=settings.AUTH_USER_MODEL,
+                    ),
+                ),
+                migrations.AlterField(
+                    model_name="ruleactivity",
+                    name="user",
+                    field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        null=True,
+                        on_delete=django.db.models.deletion.SET_NULL,
+                        to=settings.AUTH_USER_MODEL,
+                    ),
+                ),
+            ],
+        ),
+        migrations.AlterField(
+            model_name="commitauthor",
+            name="email",
+            field=models.CharField(max_length=75),
+        ),
+        migrations.SeparateDatabaseAndState(
+            database_operations=[
+                migrations.RunSQL(
+                    sql='\n                    ALTER TABLE "sentry_release" ADD COLUMN "status" integer NULL;\n                    ',
+                    reverse_sql='\n                    ALTER TABLE "sentry_release" DROP COLUMN "status";\n                    ',
+                ),
+            ],
+        ),
+        migrations.SeparateDatabaseAndState(
+            database_operations=[
+                migrations.RunSQL(
+                    sql='\n                    ALTER TABLE "sentry_groupinbox" ADD COLUMN "organization_id" bigint NULL;\n                    ALTER TABLE "sentry_groupinbox" ADD COLUMN "project_id" bigint NULL;\n                    ',
+                    reverse_sql='\n                        ALTER TABLE "sentry_groupinbox" DROP COLUMN "organization_id";\n                        ALTER TABLE "sentry_groupinbox" DROP COLUMN "project_id";\n                        ',
+                ),
+                migrations.RunSQL(
+                    sql='\n                    CREATE INDEX CONCURRENTLY "sentry_groupinbox_organization_id_7b67769a" ON "sentry_groupinbox" ("organization_id");\n                    ',
+                    reverse_sql='\n                        DROP INDEX CONCURRENTLY "sentry_groupinbox_organization_id_7b67769a";\n                        ',
+                ),
+                migrations.RunSQL(
+                    sql='\n                    CREATE INDEX CONCURRENTLY "sentry_groupinbox_project_id_ef8f034d" ON "sentry_groupinbox" ("project_id");\n                    ',
+                    reverse_sql='\n                        DROP INDEX CONCURRENTLY "sentry_groupinbox_project_id_ef8f034d";\n                        ',
+                ),
+            ],
+            state_operations=[
+                migrations.AddField(
+                    model_name="groupinbox",
+                    name="organization",
+                    field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        db_constraint=False,
+                        null=True,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to="sentry.Organization",
+                    ),
+                ),
+                migrations.AddField(
+                    model_name="groupinbox",
+                    name="project",
+                    field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        db_constraint=False,
+                        null=True,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to="sentry.Project",
+                    ),
+                ),
+            ],
+        ),
+        migrations.SeparateDatabaseAndState(
+            state_operations=[
+                migrations.AddField(
+                    model_name="release",
+                    name="status",
+                    field=sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
+                        default=0, null=True
+                    ),
+                ),
+            ],
+        ),
+        migrations.AddField(
+            model_name="platformexternalissue",
+            name="project",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                db_constraint=False,
+                null=True,
+                on_delete=django.db.models.deletion.CASCADE,
+                to="sentry.Project",
+            ),
+        ),
+        migrations.SeparateDatabaseAndState(
+            state_operations=[
+                migrations.AddField(
+                    model_name="platformexternalissue",
+                    name="group",
+                    field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        db_constraint=False,
+                        db_index=False,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to="sentry.Group",
+                    ),
+                ),
+                migrations.RemoveField(
+                    model_name="platformexternalissue",
+                    name="group_id",
+                ),
+                migrations.AlterUniqueTogether(
+                    name="platformexternalissue",
+                    unique_together={("group", "service_type")},
+                ),
+            ],
+        ),
+        migrations.CreateModel(
+            name="DashboardWidget",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("order", sentry.db.models.fields.bounded.BoundedPositiveIntegerField()),
+                ("title", models.CharField(max_length=255)),
+                ("display_type", sentry.db.models.fields.bounded.BoundedPositiveIntegerField()),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+                (
+                    "dashboard",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Dashboard"
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_dashboardwidget",
+            },
+        ),
+        migrations.CreateModel(
+            name="DashboardWidgetQuery",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("name", models.CharField(max_length=255)),
+                ("fields", sentry.db.models.fields.array.ArrayField(null=True)),
+                ("conditions", models.TextField()),
+                ("interval", models.CharField(max_length=10)),
+                ("order", sentry.db.models.fields.bounded.BoundedPositiveIntegerField()),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+                (
+                    "widget",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.DashboardWidget"
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_dashboardwidgetquery",
+            },
+        ),
+        migrations.AlterUniqueTogether(
+            name="dashboardwidgetquery",
+            unique_together={("widget", "order"), ("widget", "name")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="dashboardwidget",
+            unique_together={("dashboard", "title"), ("dashboard", "order")},
+        ),
+        migrations.CreateModel(
+            name="GroupOwner",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("type", models.PositiveSmallIntegerField()),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+                (
+                    "group",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        db_constraint=False,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to="sentry.Group",
+                        unique=True,
+                    ),
+                ),
+                (
+                    "organization",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        db_constraint=False,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to="sentry.Organization",
+                    ),
+                ),
+                (
+                    "project",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        db_constraint=False,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to="sentry.Project",
+                    ),
+                ),
+                (
+                    "team",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        null=True, on_delete=django.db.models.deletion.CASCADE, to="sentry.Team"
+                    ),
+                ),
+                (
+                    "user",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        null=True,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to=settings.AUTH_USER_MODEL,
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_groupowner",
+            },
+        ),
+        migrations.SeparateDatabaseAndState(
+            state_operations=[
+                migrations.RemoveField(
+                    model_name="dashboard",
+                    name="status",
+                ),
+            ],
+        ),
+        migrations.SeparateDatabaseAndState(
+            database_operations=[
+                migrations.RunSQL(
+                    sql='\n                        ALTER TABLE "sentry_dashboard" DROP COLUMN "status";\n                        ',
+                    reverse_sql='\n                        ALTER TABLE "sentry_dashboard" ADD COLUMN "status" int NOT NULL;\n                        ',
+                ),
+            ],
+        ),
+        migrations.AlterField(
+            model_name="groupowner",
+            name="group",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                db_constraint=False, on_delete=django.db.models.deletion.CASCADE, to="sentry.Group"
+            ),
+        ),
+        migrations.AddField(
+            model_name="dashboardwidget",
+            name="interval",
+            field=models.CharField(max_length=10, null=True),
+        ),
+        migrations.AlterField(
+            model_name="dashboardwidgetquery",
+            name="interval",
+            field=models.CharField(max_length=10, null=True),
+        ),
+        migrations.SeparateDatabaseAndState(
+            state_operations=[
+                migrations.RemoveField(
+                    model_name="dashboardwidgetquery",
+                    name="interval",
+                ),
+            ],
+        ),
+        migrations.RunSQL(
+            sql="ALTER TABLE sentry_dashboardwidgetquery DROP COLUMN interval",
+        ),
+        migrations.AddField(
+            model_name="querysubscription",
+            name="date_updated",
+            field=models.DateTimeField(default=django.utils.timezone.now, null=True),
+        ),
+        migrations.AlterField(
+            model_name="querysubscription",
+            name="status",
+            field=models.SmallIntegerField(db_index=True, default=0),
+        ),
+        migrations.AlterUniqueTogether(
+            name="dashboardwidget",
+            unique_together={("dashboard", "order")},
+        ),
+        migrations.AlterUniqueTogether(
+            name="dashboardwidgetquery",
+            unique_together={("widget", "order")},
+        ),
+        migrations.CreateModel(
+            name="DashboardTombstone",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("slug", models.CharField(max_length=255)),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+                (
+                    "organization",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Organization"
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_dashboardtombstone",
+            },
+        ),
+        migrations.AlterUniqueTogether(
+            name="dashboardtombstone",
+            unique_together={("organization", "slug")},
+        ),
+        migrations.AlterField(
+            model_name="integrationfeature",
+            name="feature",
+            field=sentry.db.models.fields.bounded.BoundedPositiveIntegerField(default=0),
+        ),
+        migrations.AlterField(
+            model_name="sentryapp",
+            name="status",
+            field=sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
+                db_index=True, default=0
+            ),
+        ),
+        migrations.AlterField(
+            model_name="integrationfeature",
+            name="feature",
+            field=sentry.db.models.fields.bounded.BoundedPositiveIntegerField(default=0),
+        ),
+        migrations.SeparateDatabaseAndState(
+            database_operations=[
+                migrations.RunSQL(
+                    sql="\n                    CREATE INDEX CONCURRENTLY IF NOT EXISTS sentry_groupinbox_date_added_f113c11b\n                    ON sentry_groupinbox (date_added);\n                    ",
+                    reverse_sql="\n                    DROP INDEX CONCURRENTLY IF EXISTS sentry_groupinbox_date_added_f113c11b;\n                    ",
+                ),
+            ],
+            state_operations=[
+                migrations.AlterField(
+                    model_name="groupinbox",
+                    name="date_added",
+                    field=models.DateTimeField(db_index=True, default=django.utils.timezone.now),
+                ),
+            ],
+        ),
+        migrations.AlterField(
+            model_name="groupcommitresolution",
+            name="group_id",
+            field=sentry.db.models.fields.bounded.BoundedBigIntegerField(),
+        ),
+        migrations.AlterField(
+            model_name="grouprelease",
+            name="group_id",
+            field=sentry.db.models.fields.bounded.BoundedBigIntegerField(),
+        ),
+        migrations.AlterField(
+            model_name="groupcommitresolution",
+            name="commit_id",
+            field=sentry.db.models.fields.bounded.BoundedBigIntegerField(db_index=True),
+        ),
+        migrations.AlterField(
+            model_name="grouptombstone",
+            name="previous_group_id",
+            field=sentry.db.models.fields.bounded.BoundedBigIntegerField(unique=True),
+        ),
+        migrations.AlterField(
+            model_name="release",
+            name="last_commit_id",
+            field=sentry.db.models.fields.bounded.BoundedBigIntegerField(null=True),
+        ),
+        migrations.SeparateDatabaseAndState(
+            database_operations=[
+                migrations.AlterField(
+                    model_name="eventattachment",
+                    name="file",
+                    field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        db_constraint=False,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to="sentry.File",
+                    ),
+                ),
+                migrations.AlterField(
+                    model_name="userreport",
+                    name="environment",
+                    field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        db_constraint=False,
+                        null=True,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to="sentry.Environment",
+                    ),
+                ),
+                migrations.AlterField(
+                    model_name="userreport",
+                    name="group",
+                    field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        db_constraint=False,
+                        null=True,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to="sentry.Group",
+                    ),
+                ),
+                migrations.AlterField(
+                    model_name="userreport",
+                    name="project",
+                    field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        db_constraint=False,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to="sentry.Project",
+                    ),
+                ),
+            ],
+            state_operations=[
+                migrations.AddField(
+                    model_name="eventattachment",
+                    name="file_id",
+                    field=sentry.db.models.fields.bounded.BoundedBigIntegerField(
+                        db_index=True, default=1
+                    ),
+                    preserve_default=False,
+                ),
+                migrations.AddField(
+                    model_name="userreport",
+                    name="environment_id",
+                    field=sentry.db.models.fields.bounded.BoundedBigIntegerField(
+                        db_index=True, null=True
+                    ),
+                ),
+                migrations.AddField(
+                    model_name="userreport",
+                    name="group_id",
+                    field=sentry.db.models.fields.bounded.BoundedBigIntegerField(
+                        db_index=True, null=True
+                    ),
+                ),
+                migrations.AddField(
+                    model_name="userreport",
+                    name="project_id",
+                    field=sentry.db.models.fields.bounded.BoundedBigIntegerField(
+                        db_index=True, default=1
+                    ),
+                    preserve_default=False,
+                ),
+                migrations.RemoveField(
+                    model_name="eventattachment",
+                    name="file",
+                ),
+                migrations.AlterUniqueTogether(
+                    name="eventattachment",
+                    unique_together={("project_id", "event_id", "file_id")},
+                ),
+                migrations.RemoveField(
+                    model_name="userreport",
+                    name="environment",
+                ),
+                migrations.RemoveField(
+                    model_name="userreport",
+                    name="group",
+                ),
+                migrations.RemoveField(
+                    model_name="userreport",
+                    name="project",
+                ),
+                migrations.AlterUniqueTogether(
+                    name="userreport",
+                    unique_together={("project_id", "event_id")},
+                ),
+                migrations.AlterIndexTogether(
+                    name="eventattachment",
+                    index_together={
+                        ("project_id", "date_added", "file_id"),
+                        ("project_id", "date_added"),
+                    },
+                ),
+                migrations.AlterIndexTogether(
+                    name="userreport",
+                    index_together={("project_id", "event_id"), ("project_id", "date_added")},
+                ),
+            ],
+        ),
+        migrations.AlterField(
+            model_name="dashboardwidget",
+            name="display_type",
+            field=sentry.db.models.fields.bounded.BoundedPositiveIntegerField(),
+        ),
+        migrations.AlterField(
+            model_name="dashboardwidget",
+            name="display_type",
+            field=sentry.db.models.fields.bounded.BoundedPositiveIntegerField(),
+        ),
+        migrations.AlterIndexTogether(
+            name="groupinbox",
+            index_together={("project", "date_added")},
+        ),
+        migrations.AddField(
+            model_name="dashboardwidgetquery",
+            name="orderby",
+            field=models.TextField(default=""),
+        ),
+        migrations.AlterField(
+            model_name="activity",
+            name="type",
+            field=sentry.db.models.fields.bounded.BoundedPositiveIntegerField(),
+        ),
+        migrations.AlterField(
+            model_name="repositoryprojectpathconfig",
+            name="organization_integration",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                null=True,
+                on_delete=django.db.models.deletion.CASCADE,
+                to="sentry.OrganizationIntegration",
+            ),
+        ),
+        migrations.CreateModel(
+            name="ProjectCodeOwners",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("date_updated", models.DateTimeField(default=django.utils.timezone.now)),
+                ("raw", models.TextField(null=True)),
+                ("schema", sentry.db.models.fields.jsonfield.JSONField(null=True)),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
+                (
+                    "project",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        db_constraint=False,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to="sentry.Project",
+                    ),
+                ),
+                (
+                    "repository_project_path_config",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to="sentry.RepositoryProjectPathConfig",
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_projectcodeowners",
+            },
+        ),
+        migrations.SeparateDatabaseAndState(
+            database_operations=[
+                migrations.AddField(
+                    model_name="savedsearch",
+                    name="sort",
+                    field=sentry.db.models.fields.text.CharField(max_length=16, null=True),
+                ),
+            ],
+            state_operations=[
+                migrations.AddField(
+                    model_name="savedsearch",
+                    name="sort",
+                    field=sentry.db.models.fields.text.CharField(
+                        default="date", max_length=16, null=True
+                    ),
+                ),
+            ],
+        ),
+        migrations.SeparateDatabaseAndState(
+            state_operations=[
+                migrations.AlterField(
+                    model_name="projectcodeowners",
+                    name="repository_project_path_config",
+                    field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.PROTECT,
+                        to="sentry.RepositoryProjectPathConfig",
+                    ),
+                ),
+            ],
+        ),
+        migrations.CreateModel(
+            name="NotificationSetting",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("scope_type", sentry.db.models.fields.bounded.BoundedPositiveIntegerField()),
+                ("scope_identifier", sentry.db.models.fields.bounded.BoundedBigIntegerField()),
+                ("target_type", sentry.db.models.fields.bounded.BoundedPositiveIntegerField()),
+                ("target_identifier", sentry.db.models.fields.bounded.BoundedBigIntegerField()),
+                ("provider", sentry.db.models.fields.bounded.BoundedPositiveIntegerField()),
+                ("type", sentry.db.models.fields.bounded.BoundedPositiveIntegerField()),
+                ("value", sentry.db.models.fields.bounded.BoundedPositiveIntegerField()),
+            ],
+            options={
+                "db_table": "sentry_notificationsetting",
+            },
+        ),
+        migrations.AlterUniqueTogether(
+            name="notificationsetting",
+            unique_together={
+                (
+                    "scope_type",
+                    "scope_identifier",
+                    "target_type",
+                    "target_identifier",
+                    "provider",
+                    "type",
+                )
+            },
+        ),
+        migrations.AlterIndexTogether(
+            name="notificationsetting",
+            index_together={("target_type", "target_identifier")},
+        ),
+        migrations.AlterField(
+            model_name="organization",
+            name="flags",
+            field=bitfield.models.BitField(
+                (
+                    (
+                        "allow_joinleave",
+                        "Allow members to join and leave teams without requiring approval.",
+                    ),
+                    (
+                        "enhanced_privacy",
+                        "Enable enhanced privacy controls to limit personally identifiable information (PII) as well as source code in things like notifications.",
+                    ),
+                    (
+                        "disable_shared_issues",
+                        "Disable sharing of limited details on issues to anonymous users.",
+                    ),
+                    (
+                        "early_adopter",
+                        "Enable early adopter status, gaining access to features prior to public release.",
+                    ),
+                    (
+                        "require_2fa",
+                        "Require and enforce two-factor authentication for all members.",
+                    ),
+                    (
+                        "disable_new_visibility_features",
+                        "Temporarily opt out of new visibility features and ui",
+                    ),
+                    ("demo_mode", "Mark an organization as a demo org."),
+                ),
+                default=1,
+            ),
+        ),
+        migrations.AlterField(
+            model_name="user",
+            name="flags",
+            field=bitfield.models.BitField(
+                (
+                    (
+                        "newsletter_consent_prompt",
+                        "Do we need to ask this user for newsletter consent?",
+                    ),
+                    ("demo_mode", "Mark an user as a demo user."),
+                ),
+                default=0,
+                null=True,
+            ),
+        ),
+        migrations.CreateModel(
+            name="Actor",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("type", models.PositiveSmallIntegerField()),
+            ],
+            options={
+                "db_table": "sentry_actor",
+            },
+        ),
+        migrations.SeparateDatabaseAndState(
+            database_operations=[
+                migrations.RunSQL(
+                    sql='\n                    ALTER TABLE sentry_team ADD COLUMN "actor_id" bigint NULL;\n                    ALTER TABLE auth_user ADD COLUMN "actor_id" bigint NULL;\n                    ',
+                    reverse_sql='\n                    ALTER TABLE sentry_team DROP COLUMN "actor_id";\n                    ALTER TABLE auth_user DROP COLUMN "actor_id";\n                    ',
+                ),
+                migrations.RunSQL(
+                    sql="\n                    CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS sentry_team_actor_idx ON sentry_team (actor_id);\n                    ",
+                    reverse_sql="\n                    DROP INDEX CONCURRENTLY IF EXISTS sentry_team_actor_idx;\n                    ",
+                ),
+                migrations.RunSQL(
+                    sql='\n                    ALTER TABLE sentry_team ADD CONSTRAINT "sentry_team_actor_idx_fk_sentry_actor_id" FOREIGN KEY ("actor_id") REFERENCES "sentry_actor" ("id") DEFERRABLE INITIALLY DEFERRED;\n                    ',
+                    reverse_sql="\n                    ALTER TABLE sentry_team DROP CONSTRAINT IF EXISTS sentry_team_actor_idx_fk_sentry_actor_id;\n                    ",
+                ),
+                migrations.RunSQL(
+                    sql="\n                    CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS auth_user_actor_idx ON auth_user (actor_id);\n                    ",
+                    reverse_sql="\n                    DROP INDEX CONCURRENTLY IF EXISTS auth_user_actor_idx;\n                    ",
+                ),
+                migrations.RunSQL(
+                    sql='\n                    ALTER TABLE auth_user ADD CONSTRAINT "auth_user_actor_idx_fk_sentry_actor_id" FOREIGN KEY ("actor_id") REFERENCES "sentry_actor" ("id") DEFERRABLE INITIALLY DEFERRED;\n                    ',
+                    reverse_sql="\n                    ALTER TABLE sentry_team DROP CONSTRAINT IF EXISTS auth_user_actor_idx_fk_sentry_actor_id;\n                    ",
+                ),
+            ],
+            state_operations=[
+                migrations.AddField(
+                    model_name="team",
+                    name="actor",
+                    field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        null=True,
+                        on_delete=django.db.models.deletion.PROTECT,
+                        to="sentry.Actor",
+                        unique=True,
+                    ),
+                ),
+                migrations.AddField(
+                    model_name="user",
+                    name="actor",
+                    field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        null=True,
+                        on_delete=django.db.models.deletion.PROTECT,
+                        to="sentry.Actor",
+                        unique=True,
+                    ),
+                ),
+            ],
+        ),
+        migrations.AddField(
+            model_name="alertrule",
+            name="owner",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                null=True, on_delete=django.db.models.deletion.CASCADE, to="sentry.Actor"
+            ),
+        ),
+        migrations.AddField(
+            model_name="rule",
+            name="owner",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                null=True, on_delete=django.db.models.deletion.CASCADE, to="sentry.Actor"
+            ),
+        ),
+        migrations.AlterField(
+            model_name="organization",
+            name="flags",
+            field=bitfield.models.BitField(
+                (
+                    (
+                        "allow_joinleave",
+                        "Allow members to join and leave teams without requiring approval.",
+                    ),
+                    (
+                        "enhanced_privacy",
+                        "Enable enhanced privacy controls to limit personally identifiable information (PII) as well as source code in things like notifications.",
+                    ),
+                    (
+                        "disable_shared_issues",
+                        "Disable sharing of limited details on issues to anonymous users.",
+                    ),
+                    (
+                        "early_adopter",
+                        "Enable early adopter status, gaining access to features prior to public release.",
+                    ),
+                    (
+                        "require_2fa",
+                        "Require and enforce two-factor authentication for all members.",
+                    ),
+                    (
+                        "disable_new_visibility_features",
+                        "Temporarily opt out of new visibility features and ui",
+                    ),
+                ),
+                default=1,
+            ),
+        ),
+        migrations.AlterField(
+            model_name="user",
+            name="flags",
+            field=bitfield.models.BitField(
+                (
+                    (
+                        "newsletter_consent_prompt",
+                        "Do we need to ask this user for newsletter consent?",
+                    ),
+                ),
+                default=0,
+                null=True,
+            ),
+        ),
+        migrations.RunPython(
+            code=add_my_issues_search,
+            reverse_code=django.db.migrations.operations.special.RunPython.noop,
+        ),
+        migrations.AlterField(
+            model_name="notificationsetting",
+            name="target_identifier",
+            field=sentry.db.models.fields.bounded.BoundedBigIntegerField(null=True),
+        ),
+        migrations.AlterField(
+            model_name="notificationsetting",
+            name="target_type",
+            field=sentry.db.models.fields.bounded.BoundedPositiveIntegerField(null=True),
+        ),
+        migrations.AlterUniqueTogether(
+            name="notificationsetting",
+            unique_together={("scope_type", "scope_identifier", "provider", "type")},
+        ),
+        migrations.AlterIndexTogether(
+            name="notificationsetting",
+            index_together=set(),
+        ),
+        migrations.SeparateDatabaseAndState(
+            state_operations=[
+                migrations.RemoveField(
+                    model_name="notificationsetting",
+                    name="target_identifier",
+                ),
+                migrations.RemoveField(
+                    model_name="notificationsetting",
+                    name="target_type",
+                ),
+            ],
+        ),
+        migrations.SeparateDatabaseAndState(
+            database_operations=[
+                migrations.RunSQL(
+                    sql='\n                        ALTER TABLE "sentry_notificationsetting" DROP COLUMN "target_identifier";\n                        ALTER TABLE "sentry_notificationsetting" DROP COLUMN "target_type";\n                        ',
+                    reverse_sql='\n                        ALTER TABLE "sentry_notificationsetting" ADD COLUMN "target_identifier" bigint NULL;\n                        ALTER TABLE "sentry_notificationsetting" ADD COLUMN "target_type" int NULL;\n\n                        ',
+                ),
+            ],
+        ),
+        migrations.AddField(
+            model_name="notificationsetting",
+            name="target",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                default=1, on_delete=django.db.models.deletion.CASCADE, to="sentry.Actor"
+            ),
+            preserve_default=False,
+        ),
+        migrations.AlterUniqueTogether(
+            name="notificationsetting",
+            unique_together={("scope_type", "scope_identifier", "target", "provider", "type")},
+        ),
+        migrations.AlterField(
+            model_name="savedsearch",
+            name="sort",
+            field=sentry.db.models.fields.text.CharField(default="date", max_length=16, null=True),
+        ),
+        migrations.AlterField(
+            model_name="projectcodeowners",
+            name="repository_project_path_config",
+            field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                on_delete=django.db.models.deletion.PROTECT,
+                to="sentry.RepositoryProjectPathConfig",
+                unique=True,
+            ),
+        ),
+        migrations.CreateModel(
+            name="ExternalActor",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("date_updated", models.DateTimeField(default=django.utils.timezone.now)),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now, null=True)),
+                ("provider", sentry.db.models.fields.bounded.BoundedPositiveIntegerField()),
+                ("external_name", models.TextField()),
+                ("external_id", models.TextField(null=True)),
+                (
+                    "actor",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Actor"
+                    ),
+                ),
+                (
+                    "integration",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        null=True,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to="sentry.Integration",
+                    ),
+                ),
+                (
+                    "organization",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Organization"
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_externalactor",
+            },
+        ),
+        migrations.AlterUniqueTogether(
+            name="externalactor",
+            unique_together={("organization", "provider", "external_name", "actor")},
+        ),
+        migrations.SeparateDatabaseAndState(
+            database_operations=[
+                migrations.RunSQL(
+                    sql='\n                    ALTER TABLE "sentry_externalactor" ALTER COLUMN "integration_id" SET DEFAULT 1;\n                    UPDATE "sentry_externalactor" SET "integration_id" = 1 where "integration_id" is NULL;\n                    ',
+                    reverse_sql='\n                    ALTER TABLE "sentry_externalactor" ALTER COLUMN "integration_id" DROP DEFAULT;\n                    ',
+                ),
+                migrations.RunSQL(
+                    sql='\n                    ALTER TABLE "sentry_externalactor" ALTER COLUMN "integration_id" SET NOT NULL;\n                    ALTER TABLE "sentry_externalactor" ALTER COLUMN "integration_id" DROP DEFAULT;\n                    ',
+                    reverse_sql='\n                    ALTER TABLE "sentry_externalactor" ALTER COLUMN "integration_id" DROP NOT NULL;\n                    ',
+                ),
+            ],
+            state_operations=[
+                migrations.AlterField(
+                    model_name="externalactor",
+                    name="integration",
+                    field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        default=1,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to="sentry.Integration",
+                    ),
+                    preserve_default=False,
+                ),
+            ],
+        ),
+        migrations.SeparateDatabaseAndState(
+            database_operations=[
+                migrations.AlterField(
+                    model_name="fileblobowner",
+                    name="organization",
+                    field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        db_constraint=False,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to="sentry.Organization",
+                    ),
+                ),
+            ],
+            state_operations=[
+                migrations.AddField(
+                    model_name="fileblobowner",
+                    name="organization_id",
+                    field=sentry.db.models.fields.bounded.BoundedBigIntegerField(db_index=True),
+                    preserve_default=False,
+                ),
+                migrations.RemoveField(
+                    model_name="fileblobowner",
+                    name="organization",
+                ),
+                migrations.AlterUniqueTogether(
+                    name="fileblobowner",
+                    unique_together={("blob", "organization_id")},
+                ),
+            ],
+        ),
+        migrations.SeparateDatabaseAndState(
+            database_operations=[
+                migrations.RunSQL(
+                    sql="\n                    CREATE INDEX CONCURRENTLY IF NOT EXISTS sentry_grouprelease_group_id_first_seen_53fc35ds\n                    ON sentry_grouprelease USING btree (group_id, first_seen);\n                    ",
+                    reverse_sql="\n                    DROP INDEX CONCURRENTLY IF EXISTS sentry_grouprelease_group_id_first_seen_53fc35ds;\n                    ",
+                ),
+                migrations.RunSQL(
+                    sql="\n                    CREATE INDEX CONCURRENTLY IF NOT EXISTS sentry_grouprelease_group_id_last_seen_g8v2sk7c\n                    ON sentry_grouprelease USING btree (group_id, last_seen DESC);\n                    ",
+                    reverse_sql="\n                    DROP INDEX CONCURRENTLY IF EXISTS sentry_grouprelease_group_id_last_seen_g8v2sk7c;\n                    ",
+                ),
+            ],
+            state_operations=[
+                migrations.AlterIndexTogether(
+                    name="grouprelease",
+                    index_together={("group_id", "last_seen"), ("group_id", "first_seen")},
+                ),
+            ],
+        ),
+        migrations.AlterField(
+            model_name="externalactor",
+            name="provider",
+            field=sentry.db.models.fields.bounded.BoundedPositiveIntegerField(),
+        ),
+        migrations.CreateModel(
+            name="TeamKeyTransaction",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("transaction", models.CharField(max_length=200)),
+                (
+                    "organization",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Organization"
+                    ),
+                ),
+                (
+                    "project",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        db_constraint=False,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to="sentry.Project",
+                    ),
+                ),
+                (
+                    "team",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Team"
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_performanceteamkeytransaction",
+            },
+        ),
+        migrations.AlterUniqueTogether(
+            name="teamkeytransaction",
+            unique_together={("project", "team", "transaction")},
+        ),
+        migrations.AlterField(
+            model_name="organizationmember",
+            name="flags",
+            field=bitfield.models.BitField(
+                (
+                    ("sso:linked", "sso:linked"),
+                    ("sso:invalid", "sso:invalid"),
+                    ("member-limit:restricted", "member-limit:restricted"),
+                ),
+                default=0,
+            ),
+        ),
+        migrations.AlterField(
+            model_name="authprovider",
+            name="flags",
+            field=bitfield.models.BitField(
+                (
+                    ("allow_unlinked", "Grant access to members who have not linked SSO accounts."),
+                    ("scim_enabled", "Enable SCIM for member and team provisioning and syncing"),
+                ),
+                default=0,
+            ),
+        ),
+        migrations.CreateModel(
+            name="ProjectTransactionThreshold",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("date_updated", models.DateTimeField(default=django.utils.timezone.now)),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now, null=True)),
+                ("threshold", models.IntegerField()),
+                ("metric", models.PositiveSmallIntegerField(default=1)),
+                (
+                    "edited_by",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        db_constraint=False,
+                        null=True,
+                        on_delete=django.db.models.deletion.SET_NULL,
+                        to=settings.AUTH_USER_MODEL,
+                    ),
+                ),
+                (
+                    "organization",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Organization"
+                    ),
+                ),
+                (
+                    "project",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        db_constraint=False,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to="sentry.Project",
+                        unique=True,
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_projecttransactionthreshold",
+            },
+        ),
+        migrations.CreateModel(
+            name="ProjectTransactionThresholdOverride",
+            fields=[
+                (
+                    "id",
+                    sentry.db.models.fields.bounded.BoundedBigAutoField(
+                        primary_key=True, serialize=False
+                    ),
+                ),
+                ("date_updated", models.DateTimeField(default=django.utils.timezone.now)),
+                ("date_added", models.DateTimeField(default=django.utils.timezone.now, null=True)),
+                ("transaction", models.CharField(max_length=200)),
+                ("threshold", models.IntegerField()),
+                ("metric", models.PositiveSmallIntegerField(default=1)),
+                (
+                    "edited_by",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        db_constraint=False,
+                        null=True,
+                        on_delete=django.db.models.deletion.SET_NULL,
+                        to=settings.AUTH_USER_MODEL,
+                    ),
+                ),
+                (
+                    "organization",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE, to="sentry.Organization"
+                    ),
+                ),
+                (
+                    "project",
+                    sentry.db.models.fields.foreignkey.FlexibleForeignKey(
+                        db_constraint=False,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to="sentry.Project",
+                    ),
+                ),
+            ],
+            options={
+                "db_table": "sentry_projecttransactionthresholdoverride",
+            },
+        ),
+        migrations.AlterUniqueTogether(
+            name="projecttransactionthresholdoverride",
+            unique_together={("project", "transaction")},
+        ),
+        migrations.AddField(
+            model_name="release",
+            name="build_code",
+            field=models.TextField(null=True),
+        ),
+        migrations.AddField(
+            model_name="release",
+            name="build_number",
+            field=models.BigIntegerField(null=True),
+        ),
+        migrations.AddField(
+            model_name="release",
+            name="major",
+            field=models.BigIntegerField(null=True),
+        ),
+        migrations.AddField(
+            model_name="release",
+            name="minor",
+            field=models.BigIntegerField(null=True),
+        ),
+        migrations.AddField(
+            model_name="release",
+            name="patch",
+            field=models.BigIntegerField(null=True),
+        ),
+        migrations.AddField(
+            model_name="release",
+            name="prerelease",
+            field=models.TextField(null=True),
+        ),
+        migrations.AddField(
+            model_name="release",
+            name="revision",
+            field=models.BigIntegerField(null=True),
+        ),
+        migrations.SeparateDatabaseAndState(
+            database_operations=[
+                migrations.RunSQL(
+                    sql='\n                    CREATE INDEX CONCURRENTLY IF NOT EXISTS "sentry_release_organization_id_major_mi_38715957_idx"\n                    ON "sentry_release" ("organization_id", "major" DESC, "minor" DESC, "patch" DESC, "revision" DESC);\n                    ',
+                    reverse_sql="DROP INDEX CONCURRENTLY IF EXISTS sentry_release_organization_id_major_mi_38715957_idx",
+                ),
+                migrations.RunSQL(
+                    sql='\n                    CREATE INDEX CONCURRENTLY IF NOT EXISTS "sentry_release_organization_id_build_code_f93815e5_idx" ON "sentry_release" ("organization_id", "build_code");\n                    ',
+                    reverse_sql="DROP INDEX CONCURRENTLY IF EXISTS sentry_release_organization_id_build_code_f93815e5_idx",
+                ),
+                migrations.RunSQL(
+                    sql='\n                    CREATE INDEX CONCURRENTLY IF NOT EXISTS "sentry_release_organization_id_build_number_e1646551_idx" ON "sentry_release" ("organization_id", "build_number");\n                    ',
+                    reverse_sql="DROP INDEX CONCURRENTLY IF EXISTS sentry_release_organization_id_build_number_e1646551_idx",
+                ),
+            ],
+            state_operations=[
+                migrations.AlterIndexTogether(
+                    name="release",
+                    index_together={
+                        ("organization", "major", "minor", "patch", "revision"),
+                        ("organization", "build_number"),
+                        ("organization", "build_code"),
+                    },
+                ),
+            ],
+        ),
+        migrations.SeparateDatabaseAndState(
+            database_operations=[
+                migrations.RunSQL(
+                    sql='\n                    CREATE INDEX CONCURRENTLY IF NOT EXISTS "sentry_release_organization_id_status_3c637259_idx" ON "sentry_release" ("organization_id", "status");\n                    ',
+                    reverse_sql="DROP INDEX CONCURRENTLY IF EXISTS sentry_release_organization_id_status_3c637259_idx",
+                ),
+                migrations.RunSQL(
+                    sql='\n                    CREATE INDEX CONCURRENTLY IF NOT EXISTS "sentry_release_organization_id_date_added_8ebd273a_idx" ON "sentry_release" ("organization_id", "date_added");\n                    ',
+                    reverse_sql="DROP INDEX CONCURRENTLY IF EXISTS sentry_release_organization_id_date_added_8ebd273a_idx",
+                ),
+            ],
+            state_operations=[
+                migrations.AlterIndexTogether(
+                    name="release",
+                    index_together={
+                        ("organization", "status"),
+                        ("organization", "build_code"),
+                        ("organization", "major", "minor", "patch", "revision"),
+                        ("organization", "date_added"),
+                        ("organization", "build_number"),
+                    },
+                ),
+            ],
+        ),
+    ]

+ 0 - 110
src/sentry/runner/commands/upgrade.py

@@ -1,122 +1,12 @@
 import click
 from django.conf import settings
-from django.db import ProgrammingError, connections
 
 from sentry.runner.decorators import configuration
 
-# List of migrations which we'll fake if we're coming from South
-DJANGO_MIGRATIONS = (
-    ("contenttypes", "0001_initial"),
-    # Note that we need to have ops make the `django_content_type.name` column nullable.
-    # This migration removes the column in the same migration, which will likely take
-    # sentry down.
-    ("contenttypes", "0002_remove_content_type_name"),
-    ("auth", "0001_initial"),
-    ("auth", "0002_alter_permission_name_max_length"),
-    ("auth", "0003_alter_user_email_max_length"),
-    ("auth", "0004_alter_user_username_opts"),
-    ("auth", "0005_alter_user_last_login_null"),
-    ("auth", "0006_require_contenttypes_0002"),
-    ("sites", "0001_initial"),
-    ("admin", "0001_initial"),
-    ("sessions", "0001_initial"),
-)
-
-
-def _has_applied_django_migration(connection, app_name, migration):
-    cursor = connection.cursor()
-    try:
-        cursor.execute(
-            "SELECT 1 FROM django_migrations WHERE app = %s AND name = %s LIMIT 1",
-            [app_name, migration],
-        )
-    except ProgrammingError as exc:
-        if 'relation "django_migrations" does not exist' in str(exc):
-            return False
-        raise
-    else:
-        return bool(cursor.fetchall())
-    finally:
-        cursor.close()
-
-
-def _has_applied_south_migration(connection, app_name, migration):
-    if migration is None:
-        return True
-    cursor = connection.cursor()
-    try:
-        cursor.execute(
-            "SELECT 1 FROM south_migrationhistory WHERE app_name = %s AND migration = %s LIMIT 1",
-            [app_name, migration],
-        )
-        return bool(cursor.fetchall())
-    finally:
-        cursor.close()
-
-
-def _fake_django_migration(connection, app_name, migration, verbosity=0):
-    if _has_applied_django_migration(connection, app_name, migration):
-        return False
-
-    if verbosity:
-        click.echo(f"Faking migration for {app_name}.{migration}")
-
-    cursor = connection.cursor()
-    try:
-        cursor.execute(
-            "INSERT INTO django_migrations (app, name, applied) VALUES (%s, %s, NOW())",
-            [app_name, migration],
-        )
-    finally:
-        cursor.close()
-
-
-def _has_south_history(connection):
-    cursor = connection.cursor()
-    try:
-        cursor.execute("SELECT 1 FROM south_migrationhistory LIMIT 1")
-    except ProgrammingError as exc:
-        if 'relation "south_migrationhistory" does not exist' in str(exc):
-            return False
-        raise
-    return True
-
-
-def _migrate_from_south(verbosity):
-    from django.db.migrations.recorder import MigrationRecorder
-
-    connection = connections["default"]
-
-    if not _has_south_history(connection):
-        return
-
-    # ensure the django_migrations relation exists
-    recorder = MigrationRecorder(connection)
-    recorder.ensure_schema()
-
-    for django_app_name, django_migration in DJANGO_MIGRATIONS:
-        _fake_django_migration(connection, django_app_name, django_migration, verbosity)
-
-    for (
-        south_app_name,
-        south_migration,
-        django_app_name,
-        django_migration,
-        south_migration_required,
-        south_migration_required_error,
-    ) in settings.SOUTH_MIGRATION_CONVERSIONS:
-        if _has_applied_south_migration(connection, south_app_name, south_migration):
-            _fake_django_migration(connection, django_app_name, django_migration)
-        elif south_migration_required:
-            raise Exception(south_migration_required_error)
-
 
 def _upgrade(interactive, traceback, verbosity, repair, with_nodestore):
     from django.core.management import call_command as dj_call_command
 
-    # migrate legacy south history into new django migrations automatically
-    _migrate_from_south(verbosity)
-
     for db_conn in settings.DATABASES.keys():
         # Always run migrations for the default connection.
         # Also run migrations on connections that have migrations explicitly enabled.