github.com/kyleu/dbaudit@v0.0.2-0.20240321155047-ff2f2c940496/app/controller/routes/routes.go (about)

     1  // Package routes - Content managed by Project Forge, see [projectforge.md] for details.
     2  package routes
     3  
     4  import (
     5  	"net/http"
     6  
     7  	"github.com/gorilla/mux"
     8  
     9  	"github.com/kyleu/dbaudit/app"
    10  	"github.com/kyleu/dbaudit/app/controller"
    11  	"github.com/kyleu/dbaudit/app/controller/clib"
    12  	"github.com/kyleu/dbaudit/app/controller/cutil"
    13  	"github.com/kyleu/dbaudit/app/util"
    14  )
    15  
    16  func makeRoute(x *mux.Router, method string, path string, f http.HandlerFunc) {
    17  	cutil.AddRoute(method, path)
    18  	x.HandleFunc(path, f).Methods(method)
    19  }
    20  
    21  //nolint:revive
    22  func AppRoutes(as *app.State, logger util.Logger) (http.Handler, error) {
    23  	r := mux.NewRouter()
    24  
    25  	makeRoute(r, http.MethodGet, "/", controller.Home)
    26  	makeRoute(r, http.MethodGet, "/healthcheck", clib.Healthcheck)
    27  	makeRoute(r, http.MethodGet, "/about", clib.About)
    28  
    29  	makeRoute(r, http.MethodGet, cutil.DefaultProfilePath, clib.Profile)
    30  	makeRoute(r, http.MethodPost, cutil.DefaultProfilePath, clib.ProfileSave)
    31  	makeRoute(r, http.MethodGet, "/auth/{key}", clib.AuthDetail)
    32  	makeRoute(r, http.MethodGet, "/auth/callback/{key}", clib.AuthCallback)
    33  	makeRoute(r, http.MethodGet, "/auth/logout/{key}", clib.AuthLogout)
    34  	makeRoute(r, http.MethodGet, cutil.DefaultSearchPath, clib.Search)
    35  
    36  	themeRoutes(r)
    37  	generatedRoutes(r)
    38  
    39  	// $PF_SECTION_START(routes)$
    40  	parseRoutes(r)
    41  	makeRoute(r, http.MethodGet, "/statement/{id}/run", controller.StatementRun)
    42  	// $PF_SECTION_END(routes)$
    43  
    44  	makeRoute(r, http.MethodGet, "/docs", clib.Docs)
    45  	makeRoute(r, http.MethodGet, "/docs/{path:.*}", clib.Docs)
    46  
    47  	adminRoutes(r)
    48  
    49  	makeRoute(r, http.MethodGet, "/favicon.ico", clib.Favicon)
    50  	makeRoute(r, http.MethodGet, "/robots.txt", clib.RobotsTxt)
    51  	makeRoute(r, http.MethodGet, "/assets/{path:.*}", clib.Static)
    52  
    53  	makeRoute(r, http.MethodOptions, "/", controller.Options)
    54  
    55  	return cutil.WireRouter(r, controller.NotFoundAction, logger)
    56  }