This commit is contained in:
2025-12-04 11:54:42 +01:00
parent 9d5caa87f3
commit b7d5551ea7
223 changed files with 5473 additions and 885 deletions

View File

@@ -0,0 +1,53 @@
/**
* Application Port: ITeamMembershipRepository
*
* Repository interface for team membership and join request operations.
* This defines the persistence boundary for team membership-related entities.
*/
import type {
TeamMembership,
TeamJoinRequest,
} from '../entities/Team';
export interface ITeamMembershipRepository {
/**
* Get membership for a driver in a team, or null if none exists.
*/
getMembership(teamId: string, driverId: string): Promise<TeamMembership | null>;
/**
* Get the active team membership for a driver (if any).
*/
getActiveMembershipForDriver(driverId: string): Promise<TeamMembership | null>;
/**
* Get all active members for a team.
*/
getTeamMembers(teamId: string): Promise<TeamMembership[]>;
/**
* Persist a membership (create or update).
*/
saveMembership(membership: TeamMembership): Promise<TeamMembership>;
/**
* Remove a membership for a driver in a team.
*/
removeMembership(teamId: string, driverId: string): Promise<void>;
/**
* Get all join requests for a team.
*/
getJoinRequests(teamId: string): Promise<TeamJoinRequest[]>;
/**
* Persist a join request (create or update).
*/
saveJoinRequest(request: TeamJoinRequest): Promise<TeamJoinRequest>;
/**
* Remove a join request by its ID.
*/
removeJoinRequest(requestId: string): Promise<void>;
}