From 4f99098b32701a181585c19fdb8bf6caa07fb8b6 Mon Sep 17 00:00:00 2001 From: Marc Mintel Date: Thu, 18 Dec 2025 13:56:05 +0100 Subject: [PATCH] view models --- apps/website/lib/view-models/CompleteOnboardingViewModel.ts | 2 +- apps/website/lib/view-models/CreateLeagueViewModel.ts | 5 +++-- .../lib/view-models/DriverLeaderboardItemViewModel.ts | 2 +- .../lib/view-models/DriverRegistrationStatusViewModel.ts | 2 +- .../lib/view-models/ImportRaceResultsSummaryViewModel.ts | 2 +- apps/website/lib/view-models/LeagueJoinRequestViewModel.ts | 4 +--- apps/website/lib/view-models/LeagueMemberViewModel.ts | 2 +- apps/website/lib/view-models/LeagueSummaryViewModel.ts | 2 +- apps/website/lib/view-models/ProtestViewModel.ts | 2 +- apps/website/lib/view-models/RaceResultViewModel.ts | 2 +- apps/website/lib/view-models/RaceResultsDetailViewModel.ts | 4 ++-- apps/website/lib/view-models/RaceWithSOFViewModel.ts | 2 +- apps/website/lib/view-models/RemoveMemberViewModel.ts | 2 +- apps/website/lib/view-models/SessionViewModel.ts | 2 +- apps/website/lib/view-models/SponsorDashboardViewModel.ts | 2 +- apps/website/lib/view-models/SponsorSponsorshipsViewModel.ts | 2 +- apps/website/lib/view-models/SponsorshipDetailViewModel.ts | 2 +- apps/website/lib/view-models/StandingEntryViewModel.ts | 2 +- apps/website/lib/view-models/WalletTransactionViewModel.ts | 2 +- apps/website/lib/view-models/WalletViewModel.ts | 4 ++-- 20 files changed, 24 insertions(+), 25 deletions(-) diff --git a/apps/website/lib/view-models/CompleteOnboardingViewModel.ts b/apps/website/lib/view-models/CompleteOnboardingViewModel.ts index a227c77ba..16e9b1810 100644 --- a/apps/website/lib/view-models/CompleteOnboardingViewModel.ts +++ b/apps/website/lib/view-models/CompleteOnboardingViewModel.ts @@ -4,7 +4,7 @@ import { CompleteOnboardingOutputDTO } from '../types/generated/CompleteOnboardi * Complete onboarding view model * UI representation of onboarding completion result */ -export class CompleteOnboardingViewModel implements CompleteOnboardingOutputDTO { +export class CompleteOnboardingViewModel { success: boolean; driverId?: string; diff --git a/apps/website/lib/view-models/CreateLeagueViewModel.ts b/apps/website/lib/view-models/CreateLeagueViewModel.ts index e132b8935..d3eeba935 100644 --- a/apps/website/lib/view-models/CreateLeagueViewModel.ts +++ b/apps/website/lib/view-models/CreateLeagueViewModel.ts @@ -5,7 +5,7 @@ import { CreateLeagueOutputDTO } from '../types/generated/CreateLeagueOutputDTO' * * Represents the result of creating a league in a UI-ready format. */ -export class CreateLeagueViewModel implements CreateLeagueOutputDTO { +export class CreateLeagueViewModel { leagueId: string; success: boolean; @@ -18,4 +18,5 @@ export class CreateLeagueViewModel implements CreateLeagueOutputDTO { get successMessage(): string { return this.success ? 'League created successfully!' : 'Failed to create league.'; } -} \ No newline at end of file +} + diff --git a/apps/website/lib/view-models/DriverLeaderboardItemViewModel.ts b/apps/website/lib/view-models/DriverLeaderboardItemViewModel.ts index 7ea380007..9123ecb24 100644 --- a/apps/website/lib/view-models/DriverLeaderboardItemViewModel.ts +++ b/apps/website/lib/view-models/DriverLeaderboardItemViewModel.ts @@ -1,6 +1,6 @@ import { DriverLeaderboardItemDTO } from '../types/generated/DriverLeaderboardItemDTO'; -export class DriverLeaderboardItemViewModel implements DriverLeaderboardItemDTO { +export class DriverLeaderboardItemViewModel { id: string; name: string; rating: number; diff --git a/apps/website/lib/view-models/DriverRegistrationStatusViewModel.ts b/apps/website/lib/view-models/DriverRegistrationStatusViewModel.ts index c13cb0f57..b0a1bf807 100644 --- a/apps/website/lib/view-models/DriverRegistrationStatusViewModel.ts +++ b/apps/website/lib/view-models/DriverRegistrationStatusViewModel.ts @@ -1,6 +1,6 @@ import { DriverRegistrationStatusDTO } from '../types/generated/DriverRegistrationStatusDTO'; -export class DriverRegistrationStatusViewModel implements DriverRegistrationStatusDTO { +export class DriverRegistrationStatusViewModel { isRegistered: boolean; raceId: string; driverId: string; diff --git a/apps/website/lib/view-models/ImportRaceResultsSummaryViewModel.ts b/apps/website/lib/view-models/ImportRaceResultsSummaryViewModel.ts index 7967c88ff..2f94a3729 100644 --- a/apps/website/lib/view-models/ImportRaceResultsSummaryViewModel.ts +++ b/apps/website/lib/view-models/ImportRaceResultsSummaryViewModel.ts @@ -5,7 +5,7 @@ interface ImportRaceResultsSummaryDTO { errors: string[]; } -export class ImportRaceResultsSummaryViewModel implements ImportRaceResultsSummaryDTO { +export class ImportRaceResultsSummaryViewModel { raceId: string; importedCount: number; errors: string[]; diff --git a/apps/website/lib/view-models/LeagueJoinRequestViewModel.ts b/apps/website/lib/view-models/LeagueJoinRequestViewModel.ts index c4face713..e841ca46a 100644 --- a/apps/website/lib/view-models/LeagueJoinRequestViewModel.ts +++ b/apps/website/lib/view-models/LeagueJoinRequestViewModel.ts @@ -4,13 +4,12 @@ import type { LeagueJoinRequestDTO } from '../types/generated/LeagueJoinRequestD * League join request view model * Transform from DTO to ViewModel with UI fields */ -export class LeagueJoinRequestViewModel implements LeagueJoinRequestDTO { +export class LeagueJoinRequestViewModel { id: string; leagueId: string; driverId: string; requestedAt: string; - private currentUserId: string; private isAdmin: boolean; constructor(dto: LeagueJoinRequestDTO, currentUserId: string, isAdmin: boolean) { @@ -18,7 +17,6 @@ export class LeagueJoinRequestViewModel implements LeagueJoinRequestDTO { this.leagueId = dto.leagueId; this.driverId = dto.driverId; this.requestedAt = dto.requestedAt; - this.currentUserId = currentUserId; this.isAdmin = isAdmin; } diff --git a/apps/website/lib/view-models/LeagueMemberViewModel.ts b/apps/website/lib/view-models/LeagueMemberViewModel.ts index 32536be2f..a93418d28 100644 --- a/apps/website/lib/view-models/LeagueMemberViewModel.ts +++ b/apps/website/lib/view-models/LeagueMemberViewModel.ts @@ -1,7 +1,7 @@ import { LeagueMemberDTO } from '../types/generated/LeagueMemberDTO'; import { DriverViewModel } from './DriverViewModel'; -export class LeagueMemberViewModel implements LeagueMemberDTO { +export class LeagueMemberViewModel { driverId: string; private currentUserId: string; diff --git a/apps/website/lib/view-models/LeagueSummaryViewModel.ts b/apps/website/lib/view-models/LeagueSummaryViewModel.ts index bba48d557..961617c2b 100644 --- a/apps/website/lib/view-models/LeagueSummaryViewModel.ts +++ b/apps/website/lib/view-models/LeagueSummaryViewModel.ts @@ -1,6 +1,6 @@ import { LeagueSummaryDTO } from '../types/generated/LeagueSummaryDTO'; -export class LeagueSummaryViewModel implements LeagueSummaryDTO { +export class LeagueSummaryViewModel { id: string; name: string; diff --git a/apps/website/lib/view-models/ProtestViewModel.ts b/apps/website/lib/view-models/ProtestViewModel.ts index 266bad404..1f3f110d0 100644 --- a/apps/website/lib/view-models/ProtestViewModel.ts +++ b/apps/website/lib/view-models/ProtestViewModel.ts @@ -4,7 +4,7 @@ import { ProtestDTO } from '../types/generated/ProtestDTO'; * Protest view model * Represents a race protest */ -export class ProtestViewModel implements ProtestDTO { +export class ProtestViewModel { id: string; raceId: string; complainantId: string; diff --git a/apps/website/lib/view-models/RaceResultViewModel.ts b/apps/website/lib/view-models/RaceResultViewModel.ts index 0428dac0a..58707b389 100644 --- a/apps/website/lib/view-models/RaceResultViewModel.ts +++ b/apps/website/lib/view-models/RaceResultViewModel.ts @@ -1,6 +1,6 @@ import { RaceResultDTO } from '../types/generated/RaceResultDTO'; -export class RaceResultViewModel implements RaceResultDTO { +export class RaceResultViewModel { driverId: string; driverName: string; avatarUrl: string; diff --git a/apps/website/lib/view-models/RaceResultsDetailViewModel.ts b/apps/website/lib/view-models/RaceResultsDetailViewModel.ts index 7e87aaa72..d87e71ceb 100644 --- a/apps/website/lib/view-models/RaceResultsDetailViewModel.ts +++ b/apps/website/lib/view-models/RaceResultsDetailViewModel.ts @@ -1,8 +1,8 @@ -import { RaceResultsDetailDTO } from '../types/generated/RaceResultsDetailDTO'; import { RaceResultDTO } from '../types/generated/RaceResultDTO'; +import { RaceResultsDetailDTO } from '../types/generated/RaceResultsDetailDTO'; import { RaceResultViewModel } from './RaceResultViewModel'; -export class RaceResultsDetailViewModel implements RaceResultsDetailDTO { +export class RaceResultsDetailViewModel { raceId: string; track: string; diff --git a/apps/website/lib/view-models/RaceWithSOFViewModel.ts b/apps/website/lib/view-models/RaceWithSOFViewModel.ts index 74df9b0eb..2defd6ed0 100644 --- a/apps/website/lib/view-models/RaceWithSOFViewModel.ts +++ b/apps/website/lib/view-models/RaceWithSOFViewModel.ts @@ -1,6 +1,6 @@ import { RaceWithSOFDTO } from '../types/generated/RaceWithSOFDTO'; -export class RaceWithSOFViewModel implements RaceWithSOFDTO { +export class RaceWithSOFViewModel { id: string; track: string; diff --git a/apps/website/lib/view-models/RemoveMemberViewModel.ts b/apps/website/lib/view-models/RemoveMemberViewModel.ts index b374a77f2..dca3fa3eb 100644 --- a/apps/website/lib/view-models/RemoveMemberViewModel.ts +++ b/apps/website/lib/view-models/RemoveMemberViewModel.ts @@ -5,7 +5,7 @@ import { RemoveLeagueMemberOutputDTO } from '../types/generated/RemoveLeagueMemb * * Represents the result of removing a member from a league in a UI-ready format. */ -export class RemoveMemberViewModel implements RemoveLeagueMemberOutputDTO { +export class RemoveMemberViewModel { success: boolean; constructor(dto: RemoveLeagueMemberOutputDTO) { diff --git a/apps/website/lib/view-models/SessionViewModel.ts b/apps/website/lib/view-models/SessionViewModel.ts index 88d75685b..d675a4947 100644 --- a/apps/website/lib/view-models/SessionViewModel.ts +++ b/apps/website/lib/view-models/SessionViewModel.ts @@ -1,6 +1,6 @@ import { AuthenticatedUserDTO } from '../types/generated/AuthenticatedUserDTO'; -export class SessionViewModel implements AuthenticatedUserDTO { +export class SessionViewModel { userId: string; email: string; displayName: string; diff --git a/apps/website/lib/view-models/SponsorDashboardViewModel.ts b/apps/website/lib/view-models/SponsorDashboardViewModel.ts index cd36dc687..798a51130 100644 --- a/apps/website/lib/view-models/SponsorDashboardViewModel.ts +++ b/apps/website/lib/view-models/SponsorDashboardViewModel.ts @@ -5,7 +5,7 @@ import type { SponsorDashboardDTO } from '../types/generated/SponsorDashboardDTO * * View model for sponsor dashboard data with UI-specific transformations. */ -export class SponsorDashboardViewModel implements SponsorDashboardDTO { +export class SponsorDashboardViewModel { sponsorId: string; sponsorName: string; diff --git a/apps/website/lib/view-models/SponsorSponsorshipsViewModel.ts b/apps/website/lib/view-models/SponsorSponsorshipsViewModel.ts index c41675d56..52986bdc2 100644 --- a/apps/website/lib/view-models/SponsorSponsorshipsViewModel.ts +++ b/apps/website/lib/view-models/SponsorSponsorshipsViewModel.ts @@ -6,7 +6,7 @@ import { SponsorshipDetailViewModel } from './SponsorshipDetailViewModel'; * * View model for sponsor sponsorships data with UI-specific transformations. */ -export class SponsorSponsorshipsViewModel implements SponsorSponsorshipsDTO { +export class SponsorSponsorshipsViewModel { sponsorId: string; sponsorName: string; diff --git a/apps/website/lib/view-models/SponsorshipDetailViewModel.ts b/apps/website/lib/view-models/SponsorshipDetailViewModel.ts index 7ba106fb3..65c309a97 100644 --- a/apps/website/lib/view-models/SponsorshipDetailViewModel.ts +++ b/apps/website/lib/view-models/SponsorshipDetailViewModel.ts @@ -1,6 +1,6 @@ import { SponsorshipDetailDTO } from '../types/generated/SponsorshipDetailDTO'; -export class SponsorshipDetailViewModel implements SponsorshipDetailDTO { +export class SponsorshipDetailViewModel { id: string; leagueId: string; leagueName: string; diff --git a/apps/website/lib/view-models/StandingEntryViewModel.ts b/apps/website/lib/view-models/StandingEntryViewModel.ts index 103ec22ac..0db89e7a0 100644 --- a/apps/website/lib/view-models/StandingEntryViewModel.ts +++ b/apps/website/lib/view-models/StandingEntryViewModel.ts @@ -1,6 +1,6 @@ import { LeagueStandingDTO } from '../types/generated/LeagueStandingDTO'; -export class StandingEntryViewModel implements LeagueStandingDTO { +export class StandingEntryViewModel { driverId: string; position: number; points: number; diff --git a/apps/website/lib/view-models/WalletTransactionViewModel.ts b/apps/website/lib/view-models/WalletTransactionViewModel.ts index ac2691e2e..4d3ac31c2 100644 --- a/apps/website/lib/view-models/WalletTransactionViewModel.ts +++ b/apps/website/lib/view-models/WalletTransactionViewModel.ts @@ -8,7 +8,7 @@ export type FullTransactionDto = TransactionDto & { type: 'deposit' | 'withdrawal'; }; -export class WalletTransactionViewModel implements FullTransactionDto { +export class WalletTransactionViewModel { id: string; walletId: string; amount: number; diff --git a/apps/website/lib/view-models/WalletViewModel.ts b/apps/website/lib/view-models/WalletViewModel.ts index 6634aea9b..c9294846b 100644 --- a/apps/website/lib/view-models/WalletViewModel.ts +++ b/apps/website/lib/view-models/WalletViewModel.ts @@ -1,7 +1,7 @@ import { WalletDto } from '../types/generated/WalletDto'; -import { WalletTransactionViewModel, FullTransactionDto } from './WalletTransactionViewModel'; +import { FullTransactionDto, WalletTransactionViewModel } from './WalletTransactionViewModel'; -export class WalletViewModel implements WalletDto { +export class WalletViewModel { id: string; leagueId: string; balance: number;