From 4b2fcbc58a8d3305a043a4276bd784d031e159e1 Mon Sep 17 00:00:00 2001 From: bronku Date: Sun, 23 Mar 2025 21:58:34 +0100 Subject: [PATCH] Simplify error handling during startup --- cmd/iroon/main.go | 5 +---- internal/server/server.go | 26 ++++---------------------- internal/server/template.go | 7 +++++-- internal/store/migrations.go | 33 ++++++++++++--------------------- internal/store/store.go | 12 +++++++----- 5 files changed, 29 insertions(+), 54 deletions(-) diff --git a/cmd/iroon/main.go b/cmd/iroon/main.go index e384e7d..112adc0 100644 --- a/cmd/iroon/main.go +++ b/cmd/iroon/main.go @@ -10,10 +10,7 @@ import ( ) func Run() { - h, err := server.New() - if err != nil { - log.Fatal(err) - } + h := server.New() defer h.Close() var handler http.Handler = h diff --git a/internal/server/server.go b/internal/server/server.go index b5193e5..b9b9ddf 100644 --- a/internal/server/server.go +++ b/internal/server/server.go @@ -19,15 +19,6 @@ func (h *Server) Close() { } } -func (h *Server) openStore() error { - var err error - h.s, err = store.OpenStore("./foo.db") - if err != nil { - h.s.Close() - } - return err -} - func (h *Server) loadHandler() { mux := http.NewServeMux() @@ -38,21 +29,12 @@ func (h *Server) loadHandler() { h.Handler = mux } -func New() (*Server, error) { +func New() *Server { var server Server - var err error - - err = server.loadTemplates() - if err != nil { - return nil, err - } - - err = server.openStore() - if err != nil { - return nil, err - } + server.loadTemplates() + server.s = store.OpenStore("./foo.db") server.loadHandler() - return &server, nil + return &server } diff --git a/internal/server/template.go b/internal/server/template.go index b483c08..210c2ce 100644 --- a/internal/server/template.go +++ b/internal/server/template.go @@ -3,16 +3,19 @@ package server import ( "embed" "html/template" + "log" "net/http" ) //go:embed templates/* var templates embed.FS -func (h *Server) loadTemplates() error { +func (h *Server) loadTemplates() { var err error h.tmpl, err = template.ParseFS(templates, "templates/*") - return err + if err != nil { + log.Fatal(err) + } } func (s *Server) render(fetch fetcher, templateName string) http.HandlerFunc { diff --git a/internal/store/migrations.go b/internal/store/migrations.go index 815f791..0137dae 100644 --- a/internal/store/migrations.go +++ b/internal/store/migrations.go @@ -3,7 +3,7 @@ package store import ( "embed" _ "embed" - "errors" + "log" "strconv" "strings" ) @@ -11,38 +11,29 @@ import ( //go:embed migrations/*.sql var migrations embed.FS -func (s *Store) loadFile(file string) error { +func (s *Store) loadFile(file string) { filename := strings.Split(file, ".") version, err := strconv.Atoi(filename[0]) if err != nil { - return err + log.Fatal("only allowed files in migrations directory are .txt") } if version <= s.version() { - return nil - } - query, err := migrations.ReadFile("migrations/" + file) - if err != nil { - return err + return } + + query, _ := migrations.ReadFile("migrations/" + file) _, err = s.db.Exec(string(query)) - return err + if err != nil { + log.Fatal("error executing migration: ", file) + } } -func (s *Store) loadMigrations() error { - if s.db == nil { - return errors.New("database doesn't exist") - } - - migration_files, err := migrations.ReadDir("migrations") - if err != nil { - return err - } +func (s *Store) loadMigrations() { + migration_files, _ := migrations.ReadDir("migrations") for _, e := range migration_files { - _ = s.loadFile(e.Name()) + s.loadFile(e.Name()) } - - return nil } func (s *Store) version() int { diff --git a/internal/store/store.go b/internal/store/store.go index f2cdea8..7d82e32 100644 --- a/internal/store/store.go +++ b/internal/store/store.go @@ -2,25 +2,27 @@ package store import ( "database/sql" + "log" _ "github.com/mattn/go-sqlite3" ) type Store struct { - db *sql.DB + db *sql.DB + cakes []Cake } -func OpenStore(filename string) (*Store, error) { +func OpenStore(filename string) *Store { var out Store var err error out.db, err = sql.Open("sqlite3", filename) if err != nil { - return &out, err + log.Fatal("Can't open the database", filename, err) } - err = out.loadMigrations() - return &out, err + out.loadMigrations() + return &out } func (s *Store) Close() {