Initial commit: DreamDict HTTP dictionary service

Go-based dictionary backend providing word validation, definitions, synonyms,
and cross-language translation for English, French, and Portuguese. Designed
as a self-hosted replacement for Wordnik, backing GogoBee.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
prosolis
2026-03-28 16:57:40 -07:00
commit eeea8d4d34
21 changed files with 3256 additions and 0 deletions

29
internal/loader/loader.go Normal file
View File

@@ -0,0 +1,29 @@
package loader
import (
"database/sql"
"fmt"
"log/slog"
"time"
)
type Loader interface {
Name() string
Load(db *sql.DB, dataDir string) error
}
func Run(db *sql.DB, dataDir string, loaders []Loader, skip map[string]bool) error {
for _, l := range loaders {
if skip[l.Name()] {
slog.Info("skipping loader", "name", l.Name())
continue
}
slog.Info("running loader", "name", l.Name())
start := time.Now()
if err := l.Load(db, dataDir); err != nil {
return fmt.Errorf("loader %s: %w", l.Name(), err)
}
slog.Info("loader complete", "name", l.Name(), "elapsed", time.Since(start).Round(time.Millisecond))
}
return nil
}