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

22 lines
639 B
Go
Raw Permalink Normal View History

package repository
import (
"context"
"gateway/internal/model/auth/domain/entity"
"go.mongodb.org/mongo-driver/v2/bson"
)
// InviteRepository persists invite codes.
type InviteRepository interface {
GetByTenantAndCodeHash(ctx context.Context, tenantID, codeHash string) (*entity.InviteCode, error)
ConsumeOne(ctx context.Context, id bson.ObjectID) (*entity.InviteCode, error)
}
// InviteConsumeLock serializes concurrent consumption for the same invite code.
type InviteConsumeLock interface {
TryLock(ctx context.Context, tenantID, codeHash string) (bool, error)
Unlock(ctx context.Context, tenantID, codeHash string) error
}