4747 ReportSubmissionRepository ,
4848)
4949from repositories .scheduled_task_repository import ScheduledTaskRepository
50+ from repositories .tag_repository import TagRepository
5051from repositories .token_repository import TokenRepository
5152from repositories .url_repository import UrlRepository
5253from repositories .user_repository import UserRepository
123124from services .scheduler import TaskScheduler
124125from services .scheduler .tasks import build_task_registry
125126from services .stats_service import StatsService
127+ from services .tag_service import TagService
126128from services .tenant_resolver import CachedMongoTenantResolver
127129from services .token_factory import TokenFactory
128130from services .url_expand_service import UrlExpandService
@@ -358,6 +360,7 @@ def build_account_erasure_service(
358360 user_repo = user_repo ,
359361 url_service = url_service ,
360362 domain_service = domain_service ,
363+ tag_service = TagService (TagRepository (db ["tags" ]), UrlRepository (db ["urlsV2" ])),
361364 click_repo = ClickRepository (db ["clicks" ]),
362365 api_key_repo = ApiKeyRepository (db ["api-keys" ]),
363366 token_repo = TokenRepository (db ["verification-tokens" ]),
@@ -668,6 +671,8 @@ def wire_services(app: FastAPI, settings: AppSettings, redis_client) -> None:
668671 )
669672 app .state .url_policy = url_policy
670673 # ── Services ─────────────────────────────────────────────────────────
674+ tag_repo = TagRepository (db ["tags" ])
675+ app .state .tag_service = TagService (tag_repo , url_repo )
671676 app .state .url_service = UrlService (
672677 url_repo ,
673678 legacy_repo ,
@@ -692,6 +697,7 @@ def wire_services(app: FastAPI, settings: AppSettings, redis_client) -> None:
692697 meta_key_secret = settings .secret_key ,
693698 events = app .state .domain_event_sink ,
694699 user_repo = user_repo ,
700+ tag_service = app .state .tag_service ,
695701 )
696702 app .state .bulk_url_service = BulkUrlService (
697703 url_repo ,
@@ -701,11 +707,13 @@ def wire_services(app: FastAPI, settings: AppSettings, redis_client) -> None:
701707 system_default_domain = settings .system_default_domain ,
702708 og_ttl_seconds = edge .og_ttl_seconds ,
703709 events = app .state .domain_event_sink ,
710+ tag_service = app .state .tag_service ,
704711 )
705712 app .state .stats_service = StatsService (
706713 click_repo ,
707714 url_repo ,
708715 max_date_range_days = settings .max_date_range_days ,
716+ tag_service = app .state .tag_service ,
709717 )
710718 # One resolver serves BOTH public read-only surfaces (preview + stats)
711719 # so they can never disagree about which link a code names or what
@@ -988,6 +996,7 @@ def wire_services(app: FastAPI, settings: AppSettings, redis_client) -> None:
988996 user_repo = user_repo ,
989997 url_service = app .state .url_service ,
990998 domain_service = app .state .custom_domain_service ,
999+ tag_service = app .state .tag_service ,
9911000 click_repo = click_repo ,
9921001 api_key_repo = api_key_repo ,
9931002 token_repo = token_repo ,
0 commit comments