Files
gridpilot.gg/apps/website/lib/mutations/admin/DeleteUserMutation.ts
2026-01-12 19:24:59 +01:00

38 lines
1.3 KiB
TypeScript

import { AdminApiClient } from '@/lib/api/admin/AdminApiClient';
import { AdminService } from '@/lib/services/admin/AdminService';
import { EnhancedErrorReporter } from '@/lib/infrastructure/EnhancedErrorReporter';
import { ConsoleLogger } from '@/lib/infrastructure/logging/ConsoleLogger';
import { Mutation } from '@/lib/contracts/mutations/Mutation';
/**
* DeleteUserMutation
*
* Framework-agnostic mutation for deleting users.
* Called from Server Actions.
*
* Input: { userId: string }
* Output: void
*
* Pattern: Server Action → Mutation → Service → API Client
*/
export class DeleteUserMutation implements Mutation<{ userId: string }, void> {
private service: AdminService;
constructor() {
// Manual DI for serverless
const logger = new ConsoleLogger();
const errorReporter = new EnhancedErrorReporter(logger, {
showUserNotifications: true,
logToConsole: true,
reportToExternal: process.env.NODE_ENV === 'production',
});
const baseUrl = process.env.NEXT_PUBLIC_API_BASE_URL || 'http://localhost:3001';
const apiClient = new AdminApiClient(baseUrl, errorReporter, logger);
this.service = new AdminService(apiClient);
}
async execute(input: { userId: string }): Promise<void> {
await this.service.deleteUser(input.userId);
}
}