Refactor admin stats API and charts data models for consistency

- Updated `AdminStatsResponse` with streamlined type annotations and added `AdminStatsData` type definition.
- Renamed chart data model fields (`totalUsers` → `total_users`, `activeUsers` → `active_users`, `members` → `value`, etc.) for alignment with backend naming conventions.
- Adjusted related test files to reflect updated data model structure.
- Improved readability of `AdminPage` component by reformatting destructuring in `useQuery`.
This commit is contained in:
Felipe Cardoso
2025-11-24 12:44:45 +01:00
parent 2e4700ae9b
commit acfe59c8b3
4 changed files with 40 additions and 29 deletions

View File

@@ -2,44 +2,51 @@ import { apiClient } from './client';
import type { Options } from './generated/sdk.gen';
export interface UserGrowthData {
date: string;
total_users: number;
active_users: number;
date: string;
total_users: number;
active_users: number;
}
export interface OrgDistributionData {
name: string;
value: number;
name: string;
value: number;
}
export interface UserStatusData {
name: string;
value: number;
name: string;
value: number;
}
export interface AdminStatsResponse {
user_growth: UserGrowthData[];
organization_distribution: OrgDistributionData[];
user_status: UserStatusData[];
user_growth: UserGrowthData[];
organization_distribution: OrgDistributionData[];
user_status: UserStatusData[];
}
export type AdminStatsData = {
body?: never;
path?: never;
query?: never;
url: '/api/v1/admin/stats';
};
/**
* Admin: Get Dashboard Stats
*
* Get aggregated statistics for the admin dashboard (admin only)
*/
export const getAdminStats = <ThrowOnError extends boolean = false>(
options?: Options<any, ThrowOnError>
options?: Options<AdminStatsData, ThrowOnError>
) => {
return (options?.client ?? apiClient).get<AdminStatsResponse, any, ThrowOnError>({
responseType: 'json',
security: [
{
scheme: 'bearer',
type: 'http',
},
],
url: '/api/v1/admin/stats',
...options,
});
return (options?.client ?? apiClient).get<AdminStatsResponse, unknown, ThrowOnError>({
responseType: 'json',
security: [
{
scheme: 'bearer',
type: 'http',
},
],
url: '/api/v1/admin/stats',
...options,
});
};