wip
This commit is contained in:
@@ -7,6 +7,9 @@ import { Penalty } from '@gridpilot/racing/domain/entities/Penalty';
|
||||
import { Protest } from '@gridpilot/racing/domain/entities/Protest';
|
||||
import { Game } from '@gridpilot/racing/domain/entities/Game';
|
||||
import { Season } from '@gridpilot/racing/domain/entities/Season';
|
||||
import { Sponsor } from '@gridpilot/racing/domain/entities/Sponsor';
|
||||
import { SeasonSponsorship } from '@gridpilot/racing/domain/entities/SeasonSponsorship';
|
||||
import { Money } from '@gridpilot/racing/domain/value-objects/Money';
|
||||
import type { LeagueMembership, JoinRequest } from '@gridpilot/racing/domain/entities/LeagueMembership';
|
||||
|
||||
import type { IDriverRepository } from '@gridpilot/racing/domain/repositories/IDriverRepository';
|
||||
@@ -25,6 +28,10 @@ import type {
|
||||
ITeamRepository,
|
||||
ITeamMembershipRepository,
|
||||
IRaceRegistrationRepository,
|
||||
ISponsorRepository,
|
||||
ISeasonSponsorshipRepository,
|
||||
ISponsorshipRequestRepository,
|
||||
ISponsorshipPricingRepository,
|
||||
} from '@gridpilot/racing';
|
||||
import type { ILeagueMembershipRepository } from '@gridpilot/racing/domain/repositories/ILeagueMembershipRepository';
|
||||
import type { IFeedRepository } from '@gridpilot/social/domain/repositories/IFeedRepository';
|
||||
@@ -62,6 +69,10 @@ import {
|
||||
getLeagueScoringPresetById,
|
||||
} from '@gridpilot/racing/infrastructure/repositories/InMemoryScoringRepositories';
|
||||
import { InMemoryLeagueScoringPresetProvider } from '@gridpilot/racing/infrastructure/repositories/InMemoryLeagueScoringPresetProvider';
|
||||
import { InMemorySponsorRepository } from '@gridpilot/racing/infrastructure/repositories/InMemorySponsorRepository';
|
||||
import { InMemorySeasonSponsorshipRepository } from '@gridpilot/racing/infrastructure/repositories/InMemorySeasonSponsorshipRepository';
|
||||
import { InMemorySponsorshipRequestRepository } from '@gridpilot/racing/infrastructure/repositories/InMemorySponsorshipRequestRepository';
|
||||
import { InMemorySponsorshipPricingRepository } from '@gridpilot/racing/infrastructure/repositories/InMemorySponsorshipPricingRepository';
|
||||
import { InMemoryTeamRepository } from '@gridpilot/racing/infrastructure/repositories/InMemoryTeamRepository';
|
||||
import { InMemoryTeamMembershipRepository } from '@gridpilot/racing/infrastructure/repositories/InMemoryTeamMembershipRepository';
|
||||
import { InMemoryRaceRegistrationRepository } from '@gridpilot/racing/infrastructure/repositories/InMemoryRaceRegistrationRepository';
|
||||
@@ -107,6 +118,13 @@ import {
|
||||
GetRacePenaltiesQuery,
|
||||
RequestProtestDefenseUseCase,
|
||||
SubmitProtestDefenseUseCase,
|
||||
GetSponsorDashboardQuery,
|
||||
GetSponsorSponsorshipsQuery,
|
||||
GetPendingSponsorshipRequestsQuery,
|
||||
GetEntitySponsorshipPricingQuery,
|
||||
ApplyForSponsorshipUseCase,
|
||||
AcceptSponsorshipRequestUseCase,
|
||||
RejectSponsorshipRequestUseCase,
|
||||
} from '@gridpilot/racing/application';
|
||||
import { TransferLeagueOwnershipUseCase } from '@gridpilot/racing/application/use-cases/TransferLeagueOwnershipUseCase';
|
||||
import type { DriverRatingProvider } from '@gridpilot/racing/application';
|
||||
@@ -571,6 +589,74 @@ export function configureDIContainer(): void {
|
||||
new InMemoryCarRepository(DEMO_CARS)
|
||||
);
|
||||
|
||||
// Sponsor repositories - seed with demo sponsors
|
||||
const seededSponsors = seedData.sponsors.map(s =>
|
||||
Sponsor.create({
|
||||
id: s.id,
|
||||
name: s.name,
|
||||
contactEmail: s.contactEmail,
|
||||
logoUrl: s.logoUrl,
|
||||
websiteUrl: s.websiteUrl,
|
||||
})
|
||||
);
|
||||
|
||||
const sponsorRepo = new InMemorySponsorRepository();
|
||||
// Use synchronous seeding via internal method
|
||||
seededSponsors.forEach(sponsor => {
|
||||
(sponsorRepo as any).sponsors.set(sponsor.id, sponsor);
|
||||
});
|
||||
container.registerInstance<ISponsorRepository>(
|
||||
DI_TOKENS.SponsorRepository,
|
||||
sponsorRepo
|
||||
);
|
||||
|
||||
const seededSponsorships = seedData.seasonSponsorships.map(ss =>
|
||||
SeasonSponsorship.create({
|
||||
id: ss.id,
|
||||
seasonId: ss.seasonId,
|
||||
sponsorId: ss.sponsorId,
|
||||
tier: ss.tier,
|
||||
pricing: Money.create(ss.pricingAmount, ss.pricingCurrency),
|
||||
status: ss.status,
|
||||
description: ss.description,
|
||||
})
|
||||
);
|
||||
|
||||
const seasonSponsorshipRepo = new InMemorySeasonSponsorshipRepository();
|
||||
// Use synchronous seeding via internal method
|
||||
seededSponsorships.forEach(sponsorship => {
|
||||
(seasonSponsorshipRepo as any).sponsorships.set(sponsorship.id, sponsorship);
|
||||
});
|
||||
container.registerInstance<ISeasonSponsorshipRepository>(
|
||||
DI_TOKENS.SeasonSponsorshipRepository,
|
||||
seasonSponsorshipRepo
|
||||
);
|
||||
|
||||
// Sponsorship Request and Pricing repositories
|
||||
const sponsorshipRequestRepo = new InMemorySponsorshipRequestRepository();
|
||||
container.registerInstance<ISponsorshipRequestRepository>(
|
||||
DI_TOKENS.SponsorshipRequestRepository,
|
||||
sponsorshipRequestRepo
|
||||
);
|
||||
|
||||
const sponsorshipPricingRepo = new InMemorySponsorshipPricingRepository();
|
||||
// Seed sponsorship pricings from demo data
|
||||
seedData.sponsorshipPricings?.forEach(pricing => {
|
||||
(sponsorshipPricingRepo as any).pricings.set(
|
||||
`${pricing.entityType}-${pricing.entityId}`,
|
||||
pricing
|
||||
);
|
||||
});
|
||||
container.registerInstance<ISponsorshipPricingRepository>(
|
||||
DI_TOKENS.SponsorshipPricingRepository,
|
||||
sponsorshipPricingRepo
|
||||
);
|
||||
|
||||
// Seed sponsorship requests from demo data
|
||||
seedData.sponsorshipRequests?.forEach(request => {
|
||||
(sponsorshipRequestRepo as any).requests.set(request.id, request);
|
||||
});
|
||||
|
||||
// Social repositories
|
||||
container.registerInstance<IFeedRepository>(
|
||||
DI_TOKENS.FeedRepository,
|
||||
@@ -908,6 +994,74 @@ export function configureDIContainer(): void {
|
||||
DI_TOKENS.GetUnreadNotificationsQuery,
|
||||
new GetUnreadNotificationsQuery(notificationRepository)
|
||||
);
|
||||
|
||||
// Register queries - Sponsors
|
||||
const sponsorRepository = container.resolve<ISponsorRepository>(DI_TOKENS.SponsorRepository);
|
||||
const seasonSponsorshipRepository = container.resolve<ISeasonSponsorshipRepository>(DI_TOKENS.SeasonSponsorshipRepository);
|
||||
|
||||
container.registerInstance(
|
||||
DI_TOKENS.GetSponsorDashboardQuery,
|
||||
new GetSponsorDashboardQuery(
|
||||
sponsorRepository,
|
||||
seasonSponsorshipRepository,
|
||||
seasonRepository,
|
||||
leagueRepository,
|
||||
leagueMembershipRepository,
|
||||
raceRepository
|
||||
)
|
||||
);
|
||||
|
||||
container.registerInstance(
|
||||
DI_TOKENS.GetSponsorSponsorshipsQuery,
|
||||
new GetSponsorSponsorshipsQuery(
|
||||
sponsorRepository,
|
||||
seasonSponsorshipRepository,
|
||||
seasonRepository,
|
||||
leagueRepository,
|
||||
leagueMembershipRepository,
|
||||
raceRepository
|
||||
)
|
||||
);
|
||||
|
||||
// Sponsorship request repositories and use cases
|
||||
const sponsorshipRequestRepository = container.resolve<ISponsorshipRequestRepository>(DI_TOKENS.SponsorshipRequestRepository);
|
||||
const sponsorshipPricingRepository = container.resolve<ISponsorshipPricingRepository>(DI_TOKENS.SponsorshipPricingRepository);
|
||||
|
||||
container.registerInstance(
|
||||
DI_TOKENS.GetPendingSponsorshipRequestsQuery,
|
||||
new GetPendingSponsorshipRequestsQuery(
|
||||
sponsorshipRequestRepository,
|
||||
sponsorRepository
|
||||
)
|
||||
);
|
||||
|
||||
container.registerInstance(
|
||||
DI_TOKENS.GetEntitySponsorshipPricingQuery,
|
||||
new GetEntitySponsorshipPricingQuery(
|
||||
sponsorshipPricingRepository,
|
||||
sponsorshipRequestRepository,
|
||||
seasonSponsorshipRepository
|
||||
)
|
||||
);
|
||||
|
||||
container.registerInstance(
|
||||
DI_TOKENS.ApplyForSponsorshipUseCase,
|
||||
new ApplyForSponsorshipUseCase(
|
||||
sponsorshipRequestRepository,
|
||||
sponsorshipPricingRepository,
|
||||
sponsorRepository
|
||||
)
|
||||
);
|
||||
|
||||
container.registerInstance(
|
||||
DI_TOKENS.AcceptSponsorshipRequestUseCase,
|
||||
new AcceptSponsorshipRequestUseCase(sponsorshipRequestRepository, seasonSponsorshipRepository)
|
||||
);
|
||||
|
||||
container.registerInstance(
|
||||
DI_TOKENS.RejectSponsorshipRequestUseCase,
|
||||
new RejectSponsorshipRequestUseCase(sponsorshipRequestRepository)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user