diff --git a/cmd/camp/main.go b/cmd/camp/main.go index 8c02566..50dd783 100644 --- a/cmd/camp/main.go +++ b/cmd/camp/main.go @@ -4,7 +4,7 @@ import ( "log" "net/http" - "github.com/codersgyan/camp/internal/contact" + "github.com/codersgyan/camp/internal/api/routes" "github.com/codersgyan/camp/internal/database" ) @@ -20,10 +20,7 @@ func main() { log.Fatal(err) } - contactRepository := contact.NewRepository(db) - contactHandler := contact.NewHandler(contactRepository) + apiRoutes := routes.Register(db) - http.HandleFunc("POST /api/contacts", contactHandler.Create) - - log.Fatal(http.ListenAndServe(":8080", nil)) + log.Fatal(http.ListenAndServe(":8080", apiRoutes)) } diff --git a/internal/api/routes/routes.go b/internal/api/routes/routes.go new file mode 100644 index 0000000..4f2ff0f --- /dev/null +++ b/internal/api/routes/routes.go @@ -0,0 +1,24 @@ +package routes + +import ( + "database/sql" + "net/http" + + "github.com/codersgyan/camp/internal/contact" +) + +func route(method string, prefix, path string) string { + return method + " " + prefix + path +} + +func ContactRoutes(prefix string, mux *http.ServeMux, db *sql.DB) { + contactRepository := contact.NewRepository(db) + contactHandler := contact.NewHandler(contactRepository) + mux.HandleFunc(route("POST", prefix, ""), contactHandler.Create) +} + +func Register(db *sql.DB) http.Handler { + mux := http.NewServeMux() + ContactRoutes("/api/v1/contacts", mux, db) + return mux +}