parent
ce582df610
commit
314ae26e18
|
@ -118,8 +118,6 @@ func PeriodicallyDeleteExpiredSessions(ctx context.Context, conn *pgxpool.Pool)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
if n > 0 {
|
if n > 0 {
|
||||||
logging.Info().Int64("num deleted sessions", n).Msg("Deleted expired sessions")
|
logging.Info().Int64("num deleted sessions", n).Msg("Deleted expired sessions")
|
||||||
} else {
|
|
||||||
logging.Debug().Msg("no sessions to delete")
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
logging.Error().Err(err).Msg("Failed to delete expired sessions")
|
logging.Error().Err(err).Msg("Failed to delete expired sessions")
|
||||||
|
|
|
@ -7,15 +7,17 @@ import (
|
||||||
|
|
||||||
type RequestPerf struct {
|
type RequestPerf struct {
|
||||||
Route string
|
Route string
|
||||||
|
Path string // the path actually matched
|
||||||
Start time.Time
|
Start time.Time
|
||||||
End time.Time
|
End time.Time
|
||||||
Blocks []PerfBlock
|
Blocks []PerfBlock
|
||||||
}
|
}
|
||||||
|
|
||||||
func MakeNewRequestPerf(route string) *RequestPerf {
|
func MakeNewRequestPerf(route string, path string) *RequestPerf {
|
||||||
return &RequestPerf{
|
return &RequestPerf{
|
||||||
Start: time.Now(),
|
Start: time.Now(),
|
||||||
Route: route,
|
Route: route,
|
||||||
|
Path: path,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package website
|
package website
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"math"
|
"math"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
@ -8,7 +9,6 @@ import (
|
||||||
|
|
||||||
"git.handmade.network/hmn/hmn/src/db"
|
"git.handmade.network/hmn/hmn/src/db"
|
||||||
"git.handmade.network/hmn/hmn/src/hmnurl"
|
"git.handmade.network/hmn/hmn/src/hmnurl"
|
||||||
"git.handmade.network/hmn/hmn/src/logging"
|
|
||||||
"git.handmade.network/hmn/hmn/src/models"
|
"git.handmade.network/hmn/hmn/src/models"
|
||||||
"git.handmade.network/hmn/hmn/src/oops"
|
"git.handmade.network/hmn/hmn/src/oops"
|
||||||
"git.handmade.network/hmn/hmn/src/templates"
|
"git.handmade.network/hmn/hmn/src/templates"
|
||||||
|
@ -62,7 +62,10 @@ func Feed(c *RequestContext) ResponseData {
|
||||||
Current: page,
|
Current: page,
|
||||||
Total: numPages,
|
Total: numPages,
|
||||||
|
|
||||||
// TODO: urls
|
FirstUrl: hmnurl.Url("/feed", nil),
|
||||||
|
LastUrl: hmnurl.Url(fmt.Sprintf("/feed/%d", numPages), nil),
|
||||||
|
NextUrl: hmnurl.Url(fmt.Sprintf("/feed/%d", page+1), nil),
|
||||||
|
PreviousUrl: hmnurl.Url(fmt.Sprintf("/feed/%d", page-1), nil),
|
||||||
}
|
}
|
||||||
|
|
||||||
var currentUserId *int
|
var currentUserId *int
|
||||||
|
@ -128,7 +131,6 @@ func Feed(c *RequestContext) ResponseData {
|
||||||
}
|
}
|
||||||
|
|
||||||
parents := postResult.Cat.GetHierarchy(c.Context(), c.Conn)
|
parents := postResult.Cat.GetHierarchy(c.Context(), c.Conn)
|
||||||
logging.Debug().Interface("parents", parents).Msg("")
|
|
||||||
|
|
||||||
var breadcrumbs []templates.Breadcrumb
|
var breadcrumbs []templates.Breadcrumb
|
||||||
breadcrumbs = append(breadcrumbs, templates.Breadcrumb{
|
breadcrumbs = append(breadcrumbs, templates.Breadcrumb{
|
||||||
|
|
|
@ -68,11 +68,7 @@ func (rb *RouteBuilder) POST(regexStr string, h Handler) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (rb *RouteBuilder) StdHandler(regexStr string, h http.Handler) {
|
func (rb *RouteBuilder) StdHandler(regexStr string, h http.Handler) {
|
||||||
rb.Router.Routes = append(rb.Router.Routes, Route{
|
rb.Handle("", regexStr, WrapStdHandler(h))
|
||||||
Method: "",
|
|
||||||
Regex: regexp.MustCompile(regexStr),
|
|
||||||
Handler: WrapStdHandler(h),
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *Router) ServeHTTP(rw http.ResponseWriter, req *http.Request) {
|
func (r *Router) ServeHTTP(rw http.ResponseWriter, req *http.Request) {
|
||||||
|
@ -88,7 +84,7 @@ func (r *Router) ServeHTTP(rw http.ResponseWriter, req *http.Request) {
|
||||||
}
|
}
|
||||||
|
|
||||||
c := &RequestContext{
|
c := &RequestContext{
|
||||||
Route: "", // TODO
|
Route: route.Regex.String(),
|
||||||
Logger: logging.GlobalLogger(),
|
Logger: logging.GlobalLogger(),
|
||||||
Req: req,
|
Req: req,
|
||||||
}
|
}
|
||||||
|
|
|
@ -72,6 +72,9 @@ func NewWebsiteRoutes(conn *pgxpool.Pool, perfCollector *perf.PerfCollector) htt
|
||||||
})
|
})
|
||||||
mainRoutes.GET(`^/feed(/(?P<page>.+)?)?$`, Feed)
|
mainRoutes.GET(`^/feed(/(?P<page>.+)?)?$`, Feed)
|
||||||
|
|
||||||
|
// mainRoutes.GET(`^/(?P<cats>forums(/cat)*)$`, Category)
|
||||||
|
// mainRoutes.GET(`^/(?P<cats>forums(/cat)*)/t/(?P<threadid>\d+)/p/(?P<postid>\d+)$`, ForumPost)
|
||||||
|
|
||||||
mainRoutes.GET("^/assets/project.css$", ProjectCSS)
|
mainRoutes.GET("^/assets/project.css$", ProjectCSS)
|
||||||
|
|
||||||
mainRoutes.AnyMethod("", FourOhFour)
|
mainRoutes.AnyMethod("", FourOhFour)
|
||||||
|
@ -212,7 +215,7 @@ func getCurrentUser(c *RequestContext, sessionId string) (*models.User, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TrackRequestPerf(c *RequestContext, perfCollector *perf.PerfCollector) (after func()) {
|
func TrackRequestPerf(c *RequestContext, perfCollector *perf.PerfCollector) (after func()) {
|
||||||
c.Perf = perf.MakeNewRequestPerf(c.Route)
|
c.Perf = perf.MakeNewRequestPerf(c.Route, c.Req.URL.Path)
|
||||||
return func() {
|
return func() {
|
||||||
c.Perf.EndRequest()
|
c.Perf.EndRequest()
|
||||||
log := logging.Info()
|
log := logging.Info()
|
||||||
|
@ -224,7 +227,7 @@ func TrackRequestPerf(c *RequestContext, perfCollector *perf.PerfCollector) (aft
|
||||||
log.Str(fmt.Sprintf("At %9.2fms", c.Perf.MsFromStart(&block)), fmt.Sprintf("%*.s[%s] %s (%.4fms)", len(blockStack)*2, "", block.Category, block.Description, block.DurationMs()))
|
log.Str(fmt.Sprintf("At %9.2fms", c.Perf.MsFromStart(&block)), fmt.Sprintf("%*.s[%s] %s (%.4fms)", len(blockStack)*2, "", block.Category, block.Description, block.DurationMs()))
|
||||||
blockStack = append(blockStack, block.End)
|
blockStack = append(blockStack, block.End)
|
||||||
}
|
}
|
||||||
log.Msg(fmt.Sprintf("Served %s in %.4fms", c.Perf.Route, float64(c.Perf.End.Sub(c.Perf.Start).Nanoseconds())/1000/1000))
|
log.Msg(fmt.Sprintf("Served %s in %.4fms", c.Perf.Path, float64(c.Perf.End.Sub(c.Perf.Start).Nanoseconds())/1000/1000))
|
||||||
perfCollector.SubmitRun(c.Perf)
|
perfCollector.SubmitRun(c.Perf)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue