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:
@@ -19,7 +19,11 @@ import { useQuery } from '@tanstack/react-query';
|
||||
import { getAdminStats } from '@/lib/api/admin';
|
||||
|
||||
export default function AdminPage() {
|
||||
const { data: stats, isLoading, error } = useQuery({
|
||||
const {
|
||||
data: stats,
|
||||
isLoading,
|
||||
error,
|
||||
} = useQuery({
|
||||
queryKey: ['admin', 'stats'],
|
||||
queryFn: async () => {
|
||||
const response = await getAdminStats();
|
||||
|
||||
@@ -23,15 +23,22 @@ export interface AdminStatsResponse {
|
||||
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>({
|
||||
return (options?.client ?? apiClient).get<AdminStatsResponse, unknown, ThrowOnError>({
|
||||
responseType: 'json',
|
||||
security: [
|
||||
{
|
||||
|
||||
@@ -19,9 +19,9 @@ jest.mock('recharts', () => {
|
||||
|
||||
describe('OrganizationDistributionChart', () => {
|
||||
const mockData: OrganizationDistributionData[] = [
|
||||
{ name: 'Engineering', members: 45, activeMembers: 42 },
|
||||
{ name: 'Marketing', members: 28, activeMembers: 25 },
|
||||
{ name: 'Sales', members: 35, activeMembers: 33 },
|
||||
{ name: 'Engineering', value: 45 },
|
||||
{ name: 'Marketing', value: 28 },
|
||||
{ name: 'Sales', value: 35 },
|
||||
];
|
||||
|
||||
it('renders chart card with title and description', () => {
|
||||
|
||||
@@ -19,9 +19,9 @@ jest.mock('recharts', () => {
|
||||
|
||||
describe('UserGrowthChart', () => {
|
||||
const mockData: UserGrowthData[] = [
|
||||
{ date: 'Jan 1', totalUsers: 100, activeUsers: 80 },
|
||||
{ date: 'Jan 2', totalUsers: 105, activeUsers: 85 },
|
||||
{ date: 'Jan 3', totalUsers: 110, activeUsers: 90 },
|
||||
{ date: 'Jan 1', total_users: 100, active_users: 80 },
|
||||
{ date: 'Jan 2', total_users: 105, active_users: 85 },
|
||||
{ date: 'Jan 3', total_users: 110, active_users: 90 },
|
||||
];
|
||||
|
||||
it('renders chart card with title and description', () => {
|
||||
|
||||
Reference in New Issue
Block a user