58 lines
2.1 KiB
TypeScript
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}`
|
|
);
|
|
},
|
|
}; |