22
33import hashlib
44import logging
5+ from enum import IntEnum
56
67from django .db import migrations , router
78from django .db .backends .base .schema import BaseDatabaseSchemaEditor
@@ -24,14 +25,48 @@ def backfill_hash_values(apps: StateApps, schema_editor: BaseDatabaseSchemaEdito
2425
2526 from django .conf import settings
2627
27- from sentry .models .outbox import OutboxCategory , OutboxScope
2828 from sentry .services .hybrid_cloud .util import control_silo_function
2929 from sentry .silo .base import SiloMode
3030 from sentry .silo .safety import unguarded_write
3131 except ImportError :
3232 logger .exception ("Cannot execute migration. Required symbols could not be imported" )
3333 return
3434
35+ # copied from src/sentry/models/outbox.py
36+ class OutboxCategory (IntEnum ):
37+ USER_UPDATE = 0
38+ UNUSED_TWO = 4
39+ UNUSUED_THREE = 13
40+ UNUSED_ONE = 19
41+ AUTH_IDENTITY_UPDATE = 25
42+ API_TOKEN_UPDATE = 32
43+
44+ # copied from src/sentry/models/outbox.py
45+ _outbox_categories_for_scope : dict [int , set [OutboxCategory ]] = {}
46+ _used_categories : set [OutboxCategory ] = set ()
47+
48+ # copied from src/sentry/models/outbox.py
49+ def scope_categories (enum_value : int , categories : set [OutboxCategory ]) -> int :
50+ _outbox_categories_for_scope [enum_value ] = categories
51+ inter = _used_categories .intersection (categories )
52+ assert not inter , f"OutboxCategories { inter } were already registered to a different scope"
53+ _used_categories .update (categories )
54+ return enum_value
55+
56+ # copied from src/sentry/models/outbox.py
57+ class OutboxScope (IntEnum ):
58+ USER_SCOPE = scope_categories (
59+ 1 ,
60+ {
61+ OutboxCategory .USER_UPDATE ,
62+ OutboxCategory .API_TOKEN_UPDATE ,
63+ OutboxCategory .UNUSED_ONE ,
64+ OutboxCategory .UNUSED_TWO ,
65+ OutboxCategory .UNUSUED_THREE ,
66+ OutboxCategory .AUTH_IDENTITY_UPDATE ,
67+ },
68+ )
69+
3570 @control_silo_function
3671 def _find_orgs_for_user (user_id : int ) -> set [int ]:
3772 return {
@@ -43,7 +78,6 @@ def _find_orgs_for_user(user_id: int) -> set[int]:
4378
4479 @control_silo_function
4580 def find_regions_for_orgs (org_ids : Container [int ]) -> set [str ]:
46-
4781 if SiloMode .get_current_mode () == SiloMode .MONOLITH :
4882 return {settings .SENTRY_MONOLITH_REGION }
4983 else :
0 commit comments