diff options
| author | David Schlachter <t480-debian-git@schlachter.ca> | 2026-01-11 22:47:52 -0500 |
|---|---|---|
| committer | David Schlachter <t480-debian-git@schlachter.ca> | 2026-01-11 22:47:52 -0500 |
| commit | 18a0b77981bc1590f558341870f8d35f8aec23c9 (patch) | |
| tree | d3229bc416e311df4579876bcf421b9d73bb8eda /lookup.go | |
| parent | c3b21783adfb761f98f1201e484f083e0b936545 (diff) | |
Refactor a bit
Diffstat (limited to 'lookup.go')
| -rw-r--r-- | lookup.go | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/lookup.go b/lookup.go new file mode 100644 index 0000000..db72e65 --- /dev/null +++ b/lookup.go @@ -0,0 +1,41 @@ +package main + +import ( + "database/sql" + "errors" + "fmt" + "strings" + + tea "github.com/charmbracelet/bubbletea" +) + +func lookupWord(db *sql.DB, word string) tea.Cmd { + return func() tea.Msg { + word = strings.TrimSpace(word) // remove leading / trailing whitespace + // Replace apostrophes (possible if copy-pasting) with single quotes + word = strings.ReplaceAll(word, `’`, `'`) + + rows, err := db.Query(`select definition from words where word = ?`, word) + if err != nil { + if errors.Is(err, sql.ErrNoRows) { + return definitionMsg("") + } + return errMsg(fmt.Errorf("looking up '%s': %s", word, err)) + } + defer rows.Close() + var combinedDefinition []string + for rows.Next() { + var definition string + err = rows.Scan(&definition) + if err != nil { + return errMsg(fmt.Errorf("looking up '%s': %s", word, err)) + } + combinedDefinition = append(combinedDefinition, definition) + } + if err := rows.Err(); err != nil { + return errMsg(fmt.Errorf("looking up '%s': %s", word, err)) + } + + return definitionMsg(strings.Join(combinedDefinition, "\n\n")) + } +} |
