Coverage for src/lexigram/admin/cli/schema_setup.py: 100%

11 statements  

« prev     ^ index     » next       coverage.py v7.15.4, created at 2026-08-21 14:56 +0800

1"""Schema setup contributions for the lexigram-admin package.""" 

2 

3from __future__ import annotations 

4 

5from lexigram.contracts.cli.contributions import SchemaSetupOutcome, SchemaSetupResult 

6from lexigram.contracts.data.sql.database import DatabaseProviderProtocol 

7 

8 

9async def ensure_tenant_configs(db: DatabaseProviderProtocol) -> SchemaSetupOutcome: 

10 """Ensure the ``tenant_configs`` settings table exists. 

11 

12 Args: 

13 db: The database provider. 

14 

15 Returns: 

16 Outcome reporting CREATED, ALREADY_PRESENT, or FAILED. 

17 """ 

18 from lexigram.admin.services.settings_service import _TABLE, AdminSettingsDbProvider 

19 

20 try: 

21 existed = await db.table_exists(_TABLE) 

22 await AdminSettingsDbProvider(db)._ensure_table() 

23 return SchemaSetupOutcome( 

24 status=( 

25 SchemaSetupResult.ALREADY_PRESENT 

26 if existed 

27 else SchemaSetupResult.CREATED 

28 ) 

29 ) 

30 except Exception as exc: 

31 return SchemaSetupOutcome(status=SchemaSetupResult.FAILED, message=str(exc))