github.com/turbot/steampipe@v1.7.0-rc.0.0.20240517123944-7cef272d4458/pkg/interactive/autocomplete_suggestions.go (about)

     1  package interactive
     2  
     3  import (
     4  	"github.com/c-bata/go-prompt"
     5  	"sort"
     6  )
     7  
     8  type autoCompleteSuggestions struct {
     9  	schemas            []prompt.Suggest
    10  	unqualifiedTables  []prompt.Suggest
    11  	unqualifiedQueries []prompt.Suggest
    12  	tablesBySchema     map[string][]prompt.Suggest
    13  	queriesByMod       map[string][]prompt.Suggest
    14  	mods               []prompt.Suggest
    15  }
    16  
    17  func newAutocompleteSuggestions() *autoCompleteSuggestions {
    18  	return &autoCompleteSuggestions{
    19  		tablesBySchema: make(map[string][]prompt.Suggest),
    20  		queriesByMod:   make(map[string][]prompt.Suggest),
    21  	}
    22  }
    23  func (s autoCompleteSuggestions) sort() {
    24  	sortSuggestions := func(s []prompt.Suggest) {
    25  		sort.Slice(s, func(i, j int) bool {
    26  			return s[i].Text < s[j].Text
    27  		})
    28  	}
    29  
    30  	sortSuggestions(s.schemas)
    31  	sortSuggestions(s.unqualifiedTables)
    32  	sortSuggestions(s.unqualifiedQueries)
    33  	for _, tables := range s.tablesBySchema {
    34  		sortSuggestions(tables)
    35  	}
    36  	for _, queries := range s.queriesByMod {
    37  		sortSuggestions(queries)
    38  	}
    39  }