package skills

import (
	"agent-desk/internal/models"
	"agent-desk/internal/pkg/enums"
	"agent-desk/internal/pkg/utils"
	"agent-desk/internal/repositories"

	"github.com/mlogclub/simple/sqls"
)

var newCandidateLoader = func() *candidateLoader {
	return &candidateLoader{}
}

type candidateLoader struct {
}

func (l *candidateLoader) findManualSkillDefinition(skillDefinitionID int64) *models.SkillDefinition {
	if skillDefinitionID <= 0 {
		return nil
	}
	return repositories.SkillDefinitionRepository.Get(sqls.DB(), skillDefinitionID)
}

func (l *candidateLoader) loadCandidateSkills(aiAgent models.AIAgent) []models.SkillDefinition {
	skillIDs := utils.SplitInt64s(aiAgent.SkillIDs)
	skills := repositories.SkillDefinitionRepository.GetByIDs(sqls.DB(), skillIDs)
	ret := make([]models.SkillDefinition, 0, len(skillIDs))
	for _, id := range skillIDs {
		if skill, ok := skills[id]; ok && skill.Status == enums.StatusOk {
			ret = append(ret, skill)
		}
	}
	return ret
}
