template-monorepo/internal/model/auth/domain/usecase/invite.go

38 lines
901 B
Go
Raw Normal View History

package usecase
import "context"
// ValidateInviteRequest checks an invite code without consuming it.
type ValidateInviteRequest struct {
TenantID string
Code string
}
// InviteView is a read-only invite snapshot.
type InviteView struct {
ID string
TenantID string
NewUsersOnly bool
RemainingUses int64
}
// ConsumeInviteRequest consumes one use of an invite code.
type ConsumeInviteRequest struct {
TenantID string
Code string
}
// ConsumedInvite is returned after a successful consume.
type ConsumedInvite struct {
ID string
TenantID string
NewUsersOnly bool
UsedCount int64
}
// InviteUseCase validates and consumes registration invite codes.
type InviteUseCase interface {
Validate(ctx context.Context, req *ValidateInviteRequest) (*InviteView, error)
Consume(ctx context.Context, req *ConsumeInviteRequest) (*ConsumedInvite, error)
}