Split routes, router, and handlers into different files

This commit is contained in:
Daniel J. Summers
2018-03-11 22:38:13 -05:00
parent 0cde2fb6db
commit d92ac4430e
4 changed files with 160 additions and 61 deletions

View File

@@ -2,17 +2,48 @@
package main
import (
"encoding/json"
"log"
"net/http"
"os"
"github.com/danieljsummers/myPrayerJournal/src/api/data"
"github.com/danieljsummers/myPrayerJournal/src/api/routes"
)
// Web contains configuration for the web server.
type Web struct {
Port string `json:"port"`
}
// Settings contains configuration for the myPrayerJournal API.
type Settings struct {
Data *data.Settings `json:"data"`
Web *Web `json:"web"`
Auth *routes.AuthConfig `json:"auth"`
}
// readSettings parses the JSON configuration file into the Settings struct.
func readSettings(f string) *Settings {
config, err := os.Open(f)
if err != nil {
log.Fatal(err)
}
defer config.Close()
parser := json.NewDecoder(config)
settings := Settings{}
if err = parser.Decode(&settings); err != nil {
log.Fatal(err)
}
return &settings
}
func main() {
db, ok := data.Connect(&data.Settings{})
cfg := readSettings("config.json")
db, ok := data.Connect(cfg.Data)
if !ok {
log.Fatal("Unable to connect to database; exiting")
}
router := routes.Routes(db)
_ = router // TODO: remove
log.Printf("myPrayerJournal API listening on %s", cfg.Web.Port)
log.Fatal(http.ListenAndServe(cfg.Web.Port, routes.NewRouter(db, cfg.Auth)))
}