Files
saas_frontend/src/application/tenants/TenantsApi.ts
T

58 lines
2.1 KiB
TypeScript

// src/features/Tenants/TenantsApi.ts
import { apiClient } from "../../lib/apiClient";
import { buildQueryString } from "../../lib/queryParams";
import type {
ApiMessage,
Tenant,
TenantCreateRequest,
TenantPaginatedResponse,
TenantUpdateRequest,
} from "./TenantsTypes";
export const tenantsApi = {
getAll: () => apiClient.get<Tenant[]>("/api/tenant/get"),
getMine: () => apiClient.get<Tenant>("/api/tenant/me"),
getById: (tenantId: string) =>
apiClient.get<Tenant>(`/api/tenant/get/${tenantId}`),
create: (payload: TenantCreateRequest) =>
apiClient.post<Tenant>("/api/tenant/create", payload, { successMessage: "Tenant created successfully", errorMessage: "Failed to create tenant" }),
update: (tenantId: string, payload: TenantUpdateRequest) =>
apiClient.put<Tenant>(`/api/tenant/update/${tenantId}`, payload, { successMessage: "Tenant updated successfully", errorMessage: "Failed to update tenant" }),
remove: (tenantId: string) =>
apiClient.delete<ApiMessage>(`/api/tenant/delete/${tenantId}`, { successMessage: "Tenant deleted", errorMessage: "Failed to delete tenant" }),
// Fixed: Manually append query params since apiClient doesn't support { params }
getPaginated: (params: {
page?: number;
page_size?: number;
search?: string;
is_active?: boolean | null;
filter_tenant_names?: string[];
filter_tenant_domains?: string[];
filter_plan_ids?: string[];
statuses?: boolean[];
sort_by?: "name" | "domain" | "status" | "plan";
sort_order?: "asc" | "desc";
}) => {
const queryString = buildQueryString({
page: params.page,
page_size: params.page_size,
search: params.search,
is_active: params.is_active,
filter_tenant_names: params.filter_tenant_names ?? undefined,
filter_tenant_domains: params.filter_tenant_domains ?? undefined,
filter_plan_ids: params.filter_plan_ids ?? undefined,
statuses: params.statuses ?? undefined,
sort_by: params.sort_by ?? undefined,
sort_order: params.sort_order ?? undefined,
});
return apiClient.get<TenantPaginatedResponse>(
`/api/tenant/list${queryString}`
);
},
};