package usecase import ( "context" "fmt" "source.toby3d.me/toby3d/auth/internal/domain" "source.toby3d.me/toby3d/auth/internal/session" ) type sessionUseCase struct { sessions session.Repository } func NewSessionUseCase(sessions session.Repository) session.UseCase { return &sessionUseCase{ sessions: sessions, } } func (useCase *sessionUseCase) Exchange(ctx context.Context, code string) (*domain.Session, error) { session, err := useCase.sessions.GetAndDelete(ctx, code) if err != nil { return nil, fmt.Errorf("cannot find session in store: %w", err) } return session, nil }