Files
gridpilot.gg/apps/website/lib/builders/view-data/AdminDashboardViewDataBuilder.ts
Marc Mintel d97f50ed72
Some checks failed
Contract Testing / contract-tests (pull_request) Failing after 6m4s
Contract Testing / contract-snapshot (pull_request) Has been skipped
view data fixes
2026-01-23 11:59:49 +01:00

32 lines
1.0 KiB
TypeScript

import { ViewData } from '@/lib/contracts/view-data/ViewData';
import type { DashboardStats } from '@/lib/types/admin';
import type { AdminDashboardViewData } from '@/lib/view-data/AdminDashboardViewData';
/**
* AdminDashboardViewDataBuilder
*
* Transforms DashboardStats API DTO into AdminDashboardViewData for server-side rendering.
* Deterministic; side-effect free; no HTTP calls.
*/
import { ViewDataBuilder } from "../../contracts/builders/ViewDataBuilder";
export class AdminDashboardViewDataBuilder implements ViewDataBuilder<any, any> {
build(input: any): any {
return AdminDashboardViewDataBuilder.build(input);
}
static build(
static build(apiDto: DashboardStats): AdminDashboardViewData {
return {
stats: {
totalUsers: apiDto.totalUsers,
activeUsers: apiDto.activeUsers,
suspendedUsers: apiDto.suspendedUsers,
deletedUsers: apiDto.deletedUsers,
systemAdmins: apiDto.systemAdmins,
recentLogins: apiDto.recentLogins,
newUsersToday: apiDto.newUsersToday,
},
};
}
}