package usecase

import (
	"context"
	"lune/talentscale/internal/domain"
	"github.com/google/uuid"
)

type questionUsecase struct {
	repo domain.QuestionRepository
}

func NewQuestionUsecase(repo domain.QuestionRepository) domain.QuestionUsecase {
	return &questionUsecase{repo: repo}
}

func (u *questionUsecase) Create(ctx context.Context, q *domain.Question) error {
	return u.repo.Create(ctx, q)
}

func (u *questionUsecase) GetByID(ctx context.Context, id uuid.UUID) (*domain.Question, error) {
	return u.repo.GetByID(ctx, id)
}

func (u *questionUsecase) GetByTestType(ctx context.Context, testTypeID uuid.UUID) ([]*domain.Question, error) {
	return u.repo.GetByTestType(ctx, testTypeID)
}

func (u *questionUsecase) Update(ctx context.Context, q *domain.Question) error {
	// Simple approach: delete old items and re-create them
	if err := u.repo.DeleteItemsByQuestionID(ctx, q.ID); err != nil {
		return err
	}
	return u.repo.Update(ctx, q)
}

func (u *questionUsecase) Delete(ctx context.Context, id uuid.UUID) error {
	return u.repo.Delete(ctx, id)
}
