diff options
| author | Alexander Kavon <hawk@alexkavon.com> | 2023-11-14 13:16:06 -0500 |
|---|---|---|
| committer | Alexander Kavon <hawk@alexkavon.com> | 2023-11-14 13:16:06 -0500 |
| commit | 2bb987d570b92a3d86f154fe53f36f953a69cc91 (patch) | |
| tree | 446283163b9c9ba9fe14ba8303008f74b3304389 | |
| parent | 60f4a3e21f186d7bbc6e1f3239dc2dc06fa1ffac (diff) | |
router types; pass config, routes, db to server type, serve func
| -rw-r--r-- | src/conf/conf.go | 2 | ||||
| -rw-r--r-- | src/main.go | 5 | ||||
| -rw-r--r-- | src/server/router.go | 27 | ||||
| -rw-r--r-- | src/server/server.go | 26 |
4 files changed, 49 insertions, 11 deletions
diff --git a/src/conf/conf.go b/src/conf/conf.go index 03b3d33..f68c2f4 100644 --- a/src/conf/conf.go +++ b/src/conf/conf.go @@ -25,7 +25,7 @@ type ( } ) -func Load() *Conf { +func NewConf() *Conf { filepath := os.Getenv("NEWSSTAND_CONFIG_PATH") if filepath == "" { diff --git a/src/main.go b/src/main.go index bdfb610..fa70724 100644 --- a/src/main.go +++ b/src/main.go @@ -7,8 +7,9 @@ import ( func main() { // load config - conf.Load() + config := conf.NewConf() // connect database // start server - server.Start() + s := server.NewServer(config, server.NewRouter(config), db.NewDatabase(config)) + s.Serve() } diff --git a/src/server/router.go b/src/server/router.go new file mode 100644 index 0000000..248a1d3 --- /dev/null +++ b/src/server/router.go @@ -0,0 +1,27 @@ +package server + +import ( + "net/http" + + "github.com/go-chi/chi/v5" + "github.com/go-chi/chi/v5/middleware" + "gitlab.com/alexkavon/newsstand/src/conf" +) + +type HandlerFunc func(s *Server) http.HandlerFunc + +type Route struct { + Name string + Method string + Pattern string + AuthRequired bool + HandlerFunc HandlerFunc +} + +type Routes []Route + +func NewRouter(config *conf.Conf) *chi.Mux { + r := chi.NewRouter() + r.Use(middleware.Logger) + return r +} diff --git a/src/server/server.go b/src/server/server.go index a265b28..21cbe71 100644 --- a/src/server/server.go +++ b/src/server/server.go @@ -1,17 +1,27 @@ package server import ( + "database/sql" "net/http" "github.com/go-chi/chi/v5" - "github.com/go-chi/chi/v5/middleware" + "gitlab.com/alexkavon/newsstand/src/conf" ) -func Start() { - r := chi.NewRouter() - r.Use(middleware.Logger) - r.Get("/", func(w http.ResponseWriter, r *http.Request) { - w.Write([]byte("Yello There!")) - }) - http.ListenAndServe(":8080", r) +type Server struct { + Router *chi.Mux + Db *sql.DB + Config *conf.Conf +} + +func NewServer(config *conf.Conf, router *chi.Mux, db *sql.DB) *Server { + return &Server{ + Router: router, + Db: db, + Config: config, + } +} + +func (s *Server) Serve() { + http.ListenAndServe(":"+s.Config.Server.Port, s.Router) } |
