/** * 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 '../types/TeamMembership'; export interface ITeamMembershipRepository { /** * Get membership for a driver in a team, or null if none exists. */ getMembership(teamId: string, driverId: string): Promise; /** * Get the active team membership for a driver (if any). */ getActiveMembershipForDriver(driverId: string): Promise; /** * Get all active members for a team. */ getTeamMembers(teamId: string): Promise; /** * Persist a membership (create or update). */ saveMembership(membership: TeamMembership): Promise; /** * Remove a membership for a driver in a team. */ removeMembership(teamId: string, driverId: string): Promise; /** * Count active members for a team. */ countByTeamId(teamId: string): Promise; /** * Get all join requests for a team. */ getJoinRequests(teamId: string): Promise; /** * Persist a join request (create or update). */ saveJoinRequest(request: TeamJoinRequest): Promise; /** * Remove a join request by its ID. */ removeJoinRequest(requestId: string): Promise; }