Files
klp/internal/search/search.go
2026-01-27 22:01:30 -06:00

47 lines
797 B
Go

package search
import (
"strings"
"github.com/yeho/klp/internal/database"
)
type Result struct {
Entry *database.Entry
}
type Options struct {
MaxResults int
}
func DefaultOptions() Options {
return Options{
MaxResults: 20,
}
}
type Searcher struct {
db *database.Database
}
func NewSearcher(db *database.Database) *Searcher {
return &Searcher{db: db}
}
func (s *Searcher) Search(query string, opts Options) []Result {
queryLower := strings.ToLower(query)
results := []Result{}
entries := s.db.List(0) // Get all entries
for _, entry := range entries {
if strings.Contains(strings.ToLower(entry.Value), queryLower) {
results = append(results, Result{Entry: entry})
if opts.MaxResults > 0 && len(results) >= opts.MaxResults {
break
}
}
}
return results
}