website refactor
This commit is contained in:
@@ -8,6 +8,7 @@ import { ConsoleLogger } from '@/lib/infrastructure/logging/ConsoleLogger';
|
||||
import { EnhancedErrorReporter } from '@/lib/infrastructure/EnhancedErrorReporter';
|
||||
import { getWebsiteApiBaseUrl } from '@/lib/config/apiBaseUrl';
|
||||
import { isProductionEnvironment } from '@/lib/config/env';
|
||||
import { HomeDiscoveryViewModel } from '@/lib/view-models/HomeDiscoveryViewModel';
|
||||
|
||||
/**
|
||||
* Landing Service - DTO Only
|
||||
@@ -21,7 +22,7 @@ export class LandingService implements Service {
|
||||
private teamsApi: TeamsApiClient;
|
||||
private authApi: AuthApiClient;
|
||||
|
||||
constructor() {
|
||||
constructor(racesApi?: RacesApiClient, leaguesApi?: LeaguesApiClient, teamsApi?: TeamsApiClient) {
|
||||
const baseUrl = getWebsiteApiBaseUrl();
|
||||
const logger = new ConsoleLogger();
|
||||
const errorReporter = new EnhancedErrorReporter(logger, {
|
||||
@@ -30,12 +31,34 @@ export class LandingService implements Service {
|
||||
reportToExternal: isProductionEnvironment(),
|
||||
});
|
||||
|
||||
this.racesApi = new RacesApiClient(baseUrl, errorReporter, logger);
|
||||
this.leaguesApi = new LeaguesApiClient(baseUrl, errorReporter, logger);
|
||||
this.teamsApi = new TeamsApiClient(baseUrl, errorReporter, logger);
|
||||
this.racesApi = racesApi || new RacesApiClient(baseUrl, errorReporter, logger);
|
||||
this.leaguesApi = leaguesApi || new LeaguesApiClient(baseUrl, errorReporter, logger);
|
||||
this.teamsApi = teamsApi || new TeamsApiClient(baseUrl, errorReporter, logger);
|
||||
this.authApi = new AuthApiClient(baseUrl, errorReporter, logger);
|
||||
}
|
||||
|
||||
async getHomeDiscovery(): Promise<any> {
|
||||
try {
|
||||
const [racesRes, leaguesRes, teamsRes] = await Promise.all([
|
||||
this.racesApi.getPageData(),
|
||||
this.leaguesApi.getAllWithCapacity(),
|
||||
this.teamsApi.getAll(),
|
||||
]);
|
||||
|
||||
const racesData = (racesRes as any).value || racesRes;
|
||||
const leaguesData = (leaguesRes as any).value || leaguesRes;
|
||||
const teamsData = (teamsRes as any).value || teamsRes;
|
||||
|
||||
return new HomeDiscoveryViewModel({
|
||||
topLeagues: leaguesData.leagues.slice(0, 4),
|
||||
teams: teamsData.teams.slice(0, 4),
|
||||
upcomingRaces: racesData.races.slice(0, 4),
|
||||
} as any);
|
||||
} catch (error: unknown) {
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
async getLandingData(): Promise<Result<{ featuredLeagues: unknown[]; stats: Record<string, unknown> }, DomainError>> {
|
||||
return Result.ok({ featuredLeagues: [], stats: {} });
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user