aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Kavon <hawk@alexkavon.com>2023-11-14 13:16:06 -0500
committerAlexander Kavon <hawk@alexkavon.com>2023-11-14 13:16:06 -0500
commit2bb987d570b92a3d86f154fe53f36f953a69cc91 (patch)
tree446283163b9c9ba9fe14ba8303008f74b3304389
parent60f4a3e21f186d7bbc6e1f3239dc2dc06fa1ffac (diff)
router types; pass config, routes, db to server type, serve func
-rw-r--r--src/conf/conf.go2
-rw-r--r--src/main.go5
-rw-r--r--src/server/router.go27
-rw-r--r--src/server/server.go26
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)
}