22from bbblb import model
33import click
44
5+ from bbblb .services import ServiceRegistry
6+ from bbblb .services .db import DBContext
7+
58from . import main , async_command
69
710
@@ -12,10 +15,12 @@ def override():
1215
1316@override .command ("list" )
1417@click .argument ("tenant" , required = False )
15- @async_command (db = True )
16- async def list_ (tenant : str ):
18+ @async_command ()
19+ async def list_ (obj : ServiceRegistry , tenant : str ):
1720 """List overrides for all or a specific tenant."""
18- async with model .session () as session :
21+ db = await obj .use ("db" , DBContext )
22+
23+ async with db .session () as session :
1924 if tenant :
2025 stmt = model .Tenant .select (name = tenant )
2126 else :
@@ -25,9 +30,10 @@ async def list_(tenant: str):
2530 if tenant and not tenants :
2631 click .echo (f"Tenant { tenant !r} not found" )
2732 raise SystemExit (1 )
28- for tenant in tenants :
29- for key , value in sorted (tenant .overrides .items ()):
30- click .echo (f"{ tenant .name } : { key } { value } " )
33+
34+ for ten in tenants :
35+ for key , value in sorted (ten .overrides .items ()):
36+ click .echo (f"{ ten .name } : { key } { value } " )
3137
3238
3339@override .command ("set" )
@@ -36,8 +42,8 @@ async def list_(tenant: str):
3642)
3743@click .argument ("tenant" )
3844@click .argument ("overrides" , nargs = - 1 , metavar = "NAME=VALUE" )
39- @async_command (db = True )
40- async def set_ (clear : bool , tenant : str , overrides : list [str ]):
45+ @async_command ()
46+ async def set_ (obj : ServiceRegistry , clear : bool , tenant : str , overrides : list [str ]):
4147 """Override create call parameters for a given tenant.
4248
4349 You can define any number of create parameter overrides per tenant as
@@ -51,7 +57,8 @@ async def set_(clear: bool, tenant: str, overrides: list[str]):
5157 parameters (e.g. duration or maxParticipants), or '+' to add items
5258 to a comma separated list parameter (e.g. disabledFeatures).
5359 """
54- async with model .session () as session :
60+ db = await obj .use ("db" , DBContext )
61+ async with db .session () as session :
5562 db_tenant = (
5663 await session .execute (model .Tenant .select (name = tenant ))
5764 ).scalar_one_or_none ()
@@ -66,11 +73,12 @@ async def set_(clear: bool, tenant: str, overrides: list[str]):
6673 raise SystemExit (1 )
6774
6875 for override in overrides :
69- m = re .match ("^([a-zA-Z0-9-_]+)([=?<- ])(.*)$" , override )
76+ m = re .match ("^([a-zA-Z0-9-_]+)([=?<+ ])(.*)$" , override )
7077 if not m :
7178 click .echo (f"Failed to parse override { override !r} " )
7279 raise SystemExit (1 )
7380 name , operator , value = m .groups ()
81+ assert operator in ("=" , "?" , "<" , "+" )
7482 db_tenant .add_override (name , operator , value )
7583
7684 await session .commit ()
@@ -80,10 +88,12 @@ async def set_(clear: bool, tenant: str, overrides: list[str]):
8088@override .command ()
8189@click .argument ("tenant" )
8290@click .argument ("overrides" , nargs = - 1 , metavar = "NAME" )
83- @async_command (db = True )
84- async def unset (tenant : str , overrides : list [str ]):
91+ @async_command ()
92+ async def unset (obj : ServiceRegistry , tenant : str , overrides : list [str ]):
8593 """Remove overrides from a given tenant."""
86- async with model .session () as session :
94+ db = await obj .use ("db" , DBContext )
95+
96+ async with db .session () as session :
8797 db_tenant = (
8898 await session .execute (model .Tenant .select (name = tenant ))
8999 ).scalar_one_or_none ()
0 commit comments