th-tenant-provisioning.ts
1.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
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<string, unknown>) : {};
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<ThProvisionTenantOutputDto> {
const raw = await requestClient.post<unknown>(
'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<void>(
'th-tenant-provisioning/initialize-tenant-database',
null,
{
params: {
tenantId: input.tenantId,
},
successMessageMode: 'message',
},
);
}