/** * Complete Onboarding Mutation * * Framework-agnostic mutation for completing onboarding. * Called from Server Actions. * * Pattern: Server Action → Mutation → Service → API Client */ import { Result } from '@/lib/contracts/Result'; import { OnboardingService } from '@/lib/services/onboarding/OnboardingService'; import { CompleteOnboardingInputDTO } from '@/lib/types/generated/CompleteOnboardingInputDTO'; import { CompleteOnboardingViewDataBuilder } from '@/lib/builders/view-data/CompleteOnboardingViewDataBuilder'; import { CompleteOnboardingViewData } from '@/lib/builders/view-data/CompleteOnboardingViewData'; export class CompleteOnboardingMutation { async execute(params: CompleteOnboardingInputDTO): Promise> { try { const onboardingService = new OnboardingService(); const result = await onboardingService.completeOnboarding(params); if (result.isErr()) { const error = result.getError(); return Result.err(error.message || 'Failed to complete onboarding'); } const output = CompleteOnboardingViewDataBuilder.build(result.unwrap()); return Result.ok(output); } catch (error) { const errorMessage = error instanceof Error ? error.message : 'Failed to complete onboarding'; return Result.err(errorMessage); } } }