th-multi-tenancy.ts 1.65 KB
import { requestClient } from '#/api/request';

export interface ThTenantSelectDto {
  id: string;
  name: string;
}

export interface ThCurrentTenantDto {
  tenantId: string | null;
  tenantName: string | null;
}

function normalizeTenantSelectItem(
  raw: Record<string, unknown>,
): ThTenantSelectDto {
  return {
    id: String(raw.id ?? raw.Id ?? ''),
    name: String(raw.name ?? raw.Name ?? ''),
  };
}

function normalizeTenantSelectList(raw: unknown): ThTenantSelectDto[] {
  const arr = Array.isArray(raw) ? raw : [];
  return arr.map((x) =>
    normalizeTenantSelectItem(x as Record<string, unknown>),
  );
}

function normalizeCurrentTenant(raw: unknown): ThCurrentTenantDto {
  const o =
    raw && typeof raw === 'object' ? (raw as Record<string, unknown>) : {};
  const tenantId = o.tenantId ?? o.TenantId;
  const tenantName = o.tenantName ?? o.TenantName;
  return {
    tenantId: tenantId == null ? null : String(tenantId),
    tenantName: tenantName == null ? null : String(tenantName),
  };
}

/** GET /api/app/th-multi-tenancy/tenant-select */
export async function thTenantSelectList(): Promise<ThTenantSelectDto[]> {
  const raw = await requestClient.get<unknown>(
    'th-multi-tenancy/tenant-select',
    {
      errorMessageMode: 'none',
      successMessageMode: 'none',
    },
  );
  return normalizeTenantSelectList(raw);
}

/** GET /api/app/th-multi-tenancy/current-tenant */
export async function thCurrentTenant(): Promise<ThCurrentTenantDto> {
  const raw = await requestClient.get<unknown>(
    'th-multi-tenancy/current-tenant',
    {
      errorMessageMode: 'none',
      successMessageMode: 'none',
    },
  );
  return normalizeCurrentTenant(raw);
}