Files
dreamdict/internal/loader/loader.go
prosolis eeea8d4d34 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>
2026-03-28 16:57:40 -07:00

30 lines
648 B
Go

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
}