File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 66from src .core .bootstrap .event import register_event_handlers
77from src .core .config .setting import get_settings
88from src .core .database .postgres .session import engine
9+ from src .core .seed .tenant import seed_default_tenant
910from src .core .dependency .rate_limit import close_rate_limiter , init_rate_limiter
1011from src .core .telemetry .metrics import APP_INFO
1112from src .core .telemetry .tracing import shutdown_tracing
@@ -33,6 +34,7 @@ async def lifespan(app: FastAPI):
3334
3435 await init_rate_limiter ()
3536 register_event_handlers ()
37+ await seed_default_tenant ()
3638
3739 yield
3840
Original file line number Diff line number Diff line change 1+ from uuid import uuid4
2+
3+ from sqlalchemy import select
4+
5+ from src .core .config .setting import get_settings
6+ from src .core .database .postgres .session import AsyncSessionLocal
7+ from src .core .middleware .tenant import set_default_tenant_id
8+ from src .modules .tenants .infrastructure .models .tenant_model import TenantModel
9+
10+ DEFAULT_TENANT_SLUG = "default"
11+
12+
13+ async def seed_default_tenant () -> None :
14+ settings = get_settings ()
15+ if settings .MULTITENANT_ENABLED :
16+ return
17+
18+ async with AsyncSessionLocal () as session :
19+ result = await session .execute (
20+ select (TenantModel ).where (TenantModel .slug == DEFAULT_TENANT_SLUG )
21+ )
22+ existing = result .scalar_one_or_none ()
23+ if existing :
24+ set_default_tenant_id (existing .id )
25+ return
26+
27+ tenant = TenantModel (
28+ id = uuid4 (),
29+ name = "Default Tenant" ,
30+ slug = DEFAULT_TENANT_SLUG ,
31+ domain = None ,
32+ )
33+ session .add (tenant )
34+ await session .commit ()
35+ await session .refresh (tenant )
36+ set_default_tenant_id (tenant .id )
You can’t perform that action at this time.
0 commit comments