import { requestClient } from '#/api/request'; export interface ThProvisionTenantInput { name: string; tenantConnectionString?: string; dbType?: number; initializeDatabase?: boolean; } export interface ThProvisionTenantOutputDto { tenantId: string; name: string; databaseName: string; tenantConnectionString: string; databaseInitialized: boolean; } export interface ThInitializeTenantDatabaseInput { tenantId: string; } function normalizeProvisionTenantOutput( raw: unknown, ): ThProvisionTenantOutputDto { const o = raw && typeof raw === 'object' ? (raw as Record) : {}; return { tenantId: String(o.tenantId ?? o.TenantId ?? ''), name: String(o.name ?? o.Name ?? ''), databaseName: String(o.databaseName ?? o.DatabaseName ?? ''), tenantConnectionString: String( o.tenantConnectionString ?? o.TenantConnectionString ?? '', ), databaseInitialized: o.databaseInitialized === true || o.DatabaseInitialized === true, }; } export async function thProvisionTenant( input: ThProvisionTenantInput, ): Promise { const raw = await requestClient.post( 'th-tenant-provisioning/provision', { dbType: input.dbType ?? 0, initializeDatabase: input.initializeDatabase ?? true, name: input.name.trim(), tenantConnectionString: input.tenantConnectionString?.trim() || undefined, }, { successMessageMode: 'message', }, ); return normalizeProvisionTenantOutput(raw); } /** POST /api/app/th-tenant-provisioning/initialize-tenant-database */ export async function thInitializeTenantDatabase( input: ThInitializeTenantDatabaseInput, ) { return requestClient.post( 'th-tenant-provisioning/initialize-tenant-database', null, { params: { tenantId: input.tenantId, }, successMessageMode: 'message', }, ); }