package recommendation import ( "Yimaru-Backend/internal/repository" "context" "sort" ) // type RecommendationService interface { // GetRecommendations(ctx context.Context, userID string) ([]string, error) // } type service struct { repo repository.RecommendationRepository } func NewService(repo repository.RecommendationRepository) RecommendationService { return &service{repo: repo} } func (s *service) GetRecommendations(ctx context.Context, userID string) ([]string, error) { interactions, err := s.repo.GetUserVirtualGameInteractions(ctx, userID) if err != nil { return nil, err } recommendationMap := map[string]int{} for _, interaction := range interactions { score := 1 switch interaction.InteractionType { case "bet": score = 5 case "view": score = 1 } recommendationMap[interaction.GameID] += score } // Example: return top 3 games based on score topGames := sortGamesByScore(recommendationMap) return topGames, nil } func sortGamesByScore(scoreMap map[string]int) []string { type kv struct { Key string Value int } var sorted []kv for k, v := range scoreMap { sorted = append(sorted, kv{k, v}) } sort.Slice(sorted, func(i, j int) bool { return sorted[i].Value > sorted[j].Value }) var result []string for i := 0; i < len(sorted) && i < 3; i++ { result = append(result, sorted[i].Key) } return result }