Yimaru-BackEnd/internal/ports/team.go
Yared Yemane 31bd1e3814 Add team member email invitations for admin panel onboarding
Introduces invite, verify, accept, resend, and revoke flows using team_members and invitation tokens, sends the branded invitation template, and requires account activation before team login.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-22 03:43:00 -07:00

52 lines
2.8 KiB
Go

package ports
import (
"context"
"time"
"Yimaru-Backend/internal/domain"
)
type TeamStore interface {
CreateTeamMember(ctx context.Context, member domain.TeamMember) (domain.TeamMember, error)
GetTeamMemberByID(ctx context.Context, id int64) (domain.TeamMember, error)
GetTeamMemberByEmail(ctx context.Context, email string) (domain.TeamMember, error)
GetAllTeamMembers(
ctx context.Context,
teamRole, department, status *string,
limit, offset int32,
) ([]domain.TeamMember, int64, error)
SearchTeamMembers(
ctx context.Context,
search string,
teamRole, status *string,
) ([]domain.TeamMember, error)
UpdateTeamMember(ctx context.Context, req domain.UpdateTeamMemberReq) error
UpdateTeamMemberStatus(ctx context.Context, req domain.UpdateTeamMemberStatusReq) error
UpdateTeamMemberPassword(ctx context.Context, memberID int64, password string) error
UpdateTeamMemberLastLogin(ctx context.Context, memberID int64) error
DeleteTeamMember(ctx context.Context, memberID int64) error
CheckTeamMemberEmailExists(ctx context.Context, email string) (bool, error)
GetTeamMembersByDepartment(ctx context.Context, department string) ([]domain.TeamMember, error)
GetTeamMembersByRole(ctx context.Context, role string) ([]domain.TeamMember, error)
CountTeamMembersByStatus(ctx context.Context) (domain.TeamMemberStats, error)
UpdateTeamMemberEmailVerified(ctx context.Context, memberID int64, verified bool) error
RevokeAllActiveTeamRefreshTokensForMember(ctx context.Context, memberID int64) error
CreateTeamRefreshToken(ctx context.Context, memberID int64, token string, expiresAt, createdAt time.Time) error
GetTeamRefreshTokenByToken(ctx context.Context, token string) (domain.TeamRefreshToken, error)
RevokeTeamRefreshTokenByToken(ctx context.Context, token string) error
BulkDeactivateTeamMembersByRole(ctx context.Context, teamRole string, excludeTeamMemberID *int64) (int64, error)
BulkReactivateTeamMembersByRole(ctx context.Context, teamRole string, excludeTeamMemberID *int64) (int64, error)
CreateTeamInvitation(ctx context.Context, invitation domain.TeamInvitation) (domain.TeamInvitation, error)
GetTeamInvitationByToken(ctx context.Context, token string) (domain.TeamInvitation, error)
GetTeamInvitationByID(ctx context.Context, id int64) (domain.TeamInvitation, error)
GetPendingTeamInvitationByMemberID(ctx context.Context, memberID int64) (domain.TeamInvitation, error)
RevokePendingTeamInvitationsForMember(ctx context.Context, memberID int64) error
AcceptTeamInvitation(ctx context.Context, invitationID int64) (domain.TeamInvitation, error)
RevokeTeamInvitation(ctx context.Context, invitationID int64) (domain.TeamInvitation, error)
ExpireTeamInvitation(ctx context.Context, invitationID int64) error
ListTeamInvitations(ctx context.Context, status *string, limit, offset int32) ([]domain.TeamInvitationWithMember, int64, error)
}