This commit is contained in:
2025-12-12 14:23:40 +01:00
parent 6a88fe93ab
commit 2cd3bfbb47
58 changed files with 2866 additions and 260 deletions

View File

@@ -2,6 +2,34 @@ import type { Season } from '../entities/Season';
export interface ISeasonRepository {
findById(id: string): Promise<Season | null>;
/**
* Backward-compatible alias retained for existing callers.
* Prefer listByLeague for new usage.
*/
findByLeagueId(leagueId: string): Promise<Season[]>;
/**
* Backward-compatible alias retained for existing callers.
* Prefer add for new usage.
*/
create(season: Season): Promise<Season>;
/**
* Add a new Season aggregate.
*/
add(season: Season): Promise<void>;
/**
* Persist changes to an existing Season aggregate.
*/
update(season: Season): Promise<void>;
/**
* List all Seasons for a given League.
*/
listByLeague(leagueId: string): Promise<Season[]>;
/**
* List Seasons for a League that are currently active.
*/
listActiveByLeague(leagueId: string): Promise<Season[]>;
}

View File

@@ -9,6 +9,12 @@ import type { SeasonSponsorship, SponsorshipTier } from '../entities/SeasonSpons
export interface ISeasonSponsorshipRepository {
findById(id: string): Promise<SeasonSponsorship | null>;
findBySeasonId(seasonId: string): Promise<SeasonSponsorship[]>;
/**
* Convenience lookup for aggregating sponsorships at league level.
* Implementations should rely on the denormalized leagueId where present,
* falling back to joining through Seasons if needed.
*/
findByLeagueId(leagueId: string): Promise<SeasonSponsorship[]>;
findBySponsorId(sponsorId: string): Promise<SeasonSponsorship[]>;
findBySeasonAndTier(seasonId: string, tier: SponsorshipTier): Promise<SeasonSponsorship[]>;
create(sponsorship: SeasonSponsorship): Promise<SeasonSponsorship>;