/** * InvitationToken Repository Port * * Defines the interface for InvitationToken persistence operations. * This is a secondary port (output port) in hexagonal architecture. */ import { InvitationToken } from '../../entities/invitation-token.entity'; export const INVITATION_TOKEN_REPOSITORY = 'InvitationTokenRepository'; export interface InvitationTokenRepository { /** * Save an invitation token entity */ save(invitationToken: InvitationToken): Promise; /** * Find invitation token by token string */ findByToken(token: string): Promise; /** * Find invitation token by email (only non-used, non-expired) */ findActiveByEmail(email: string): Promise; /** * Find all invitation tokens by organization */ findByOrganization(organizationId: string): Promise; /** * Delete expired invitation tokens */ deleteExpired(): Promise; /** * Update an invitation token */ update(invitationToken: InvitationToken): Promise; }