dict @ 786ff5cff8d6fdca6dd80bd0807619bdea5f0f51

feat: Add spellfix check back for fts5
  1diff --git a/Makefile b/Makefile
  2index eb08518ffbba68cbace6e59867f37074cb02adac..a04902b0aadb72c1913e793732b226f5bbe3c8d7 100644
  3--- a/Makefile
  4+++ b/Makefile
  5@@ -7,8 +7,7 @@ buid: ext
  6 	$(GO_BUILD) -o $(BIN) ./cmd/dict/main.go
  7 
  8 run: ext
  9-	$(GO_RUN) ./cmd/dict/main.go
 10-		
 11+	$(GO_RUN) ./cmd/dict/main.go ui
 12 
 13 import: ext
 14 	$(GO_RUN) ./cmd/dict/main.go import
 15diff --git a/cmd/ui/ui.go b/cmd/ui/ui.go
 16index 82c0bc5fed899b86af453dc08e1d3b2909ac9501..b5f2f2fca941082410826eb92820fcb5b44172f8 100644
 17--- a/cmd/ui/ui.go
 18+++ b/cmd/ui/ui.go
 19@@ -21,13 +21,13 @@ 	Name:  "ui",
 20 	Usage: "interactive dictionary",
 21 	Flags: []cli.Flag{
 22 		&cli.StringFlag{
 23-			Name:  "filename",
 24+			Name:  "database",
 25 			Value: "main.dict",
 26 			Usage: "Dictionary database location",
 27 		},
 28 	},
 29 	Action: func(cCtx *cli.Context) error {
 30-		name := cCtx.String("lang")
 31+		name := cCtx.String("database")
 32 		return Run(context.Background(), name)
 33 	},
 34 }
 35@@ -87,8 +87,10 @@ 			return vs
 36 		})
 37 
 38 	input.SetDoneFunc(func(key tcell.Key) {
 39-		textView.Clear()
 40-		input.SetText("")
 41+		if key == tcell.KeyEscape {
 42+			textView.Clear()
 43+			input.SetText("")
 44+		}
 45 	})
 46 
 47 	grid := tview.NewGrid().
 48diff --git a/db/db.go b/db/db.go
 49index 746c30d2b2886716386f8794a339201479da9e24..b28dea2cb1aa9b02df7b1ab68295f21e6f36458e 100644
 50--- a/db/db.go
 51+++ b/db/db.go
 52@@ -4,6 +4,7 @@ import (
 53 	"context"
 54 	"database/sql"
 55 	"fmt"
 56+	"os"
 57 
 58 	"github.com/mattn/go-sqlite3"
 59 )
 60@@ -42,9 +43,8 @@ func (d *DB) Migrate(ctx context.Context) error {
 61 	_, err := d.db.ExecContext(
 62 		ctx,
 63 		`CREATE VIRTUAL TABLE IF NOT EXISTS words USING fts5 (word, line);
 64-		CREATE VIRTUAL TABLE IF NOT EXISTS words_terms USING fts4aux(words);
 65-		CREATE VIRTUAL TABLE IF NOT EXISTS spell USING spellfix1;
 66-		`,
 67+		CREATE VIRTUAL TABLE IF NOT EXISTS words_vocab USING fts5vocab('words', 'row');
 68+		CREATE VIRTUAL TABLE IF NOT EXISTS spell USING spellfix1;`,
 69 	)
 70 	return err
 71 }
 72@@ -100,7 +100,7 @@ 		}
 73 		words = append(words, w)
 74 	}
 75 
 76-	return words, err
 77+	return words, nil
 78 
 79 }
 80 
 81@@ -119,8 +119,7 @@
 82 func (d *DB) Consolidade(ctx context.Context) error {
 83 	_, err := d.db.ExecContext(
 84 		ctx,
 85-		`INSERT INTO spell(word,rank)
 86-		SELECT term, documents FROM words_terms WHERE col='*'`,
 87+		`INSERT INTO spell(word) SELECT term FROM words_vocab`,
 88 	)
 89 	if err != nil {
 90 		return err
 91@@ -139,6 +138,10 @@ 	return Copy(ctx, d.db, destDb)
 92 }
 93 
 94 func (d *DB) Restore(ctx context.Context, name string) error {
 95+	if _, err := os.Stat(name); err != nil {
 96+		return err
 97+	}
 98+
 99 	srcDb, err := sql.Open("sqlite3_with_extensions", name)
100 	if err != nil {
101 		return err