Coverage for src/lexigram/admin/cli/schema_setup.py: 0%
11 statements
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-24 23:18 +0800
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-24 23:18 +0800
1"""Schema setup contributions for the lexigram-admin package."""
3from __future__ import annotations
5from lexigram.contracts.cli.contributions import SchemaSetupOutcome, SchemaSetupResult
6from lexigram.contracts.data.sql.database import DatabaseProviderProtocol
9async def ensure_tenant_configs(db: DatabaseProviderProtocol) -> SchemaSetupOutcome:
10 """Ensure the ``tenant_configs`` settings table exists.
12 Args:
13 db: The database provider.
15 Returns:
16 Outcome reporting CREATED, ALREADY_PRESENT, or FAILED.
17 """
18 from lexigram.admin.services.settings_service import _TABLE, AdminSettingsDbProvider
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))