diff options
| author | Mitch Riedstra <mitch@riedstra.us> | 2020-09-20 20:56:53 -0400 |
|---|---|---|
| committer | Mitch Riedstra <mitch@riedstra.us> | 2020-09-20 20:56:53 -0400 |
| commit | 09979dcab01643349cee425b71fa3b4db24f8d60 (patch) | |
| tree | 333d7c4c8941b6ad8d4092d700566956d107521a /page | |
| parent | 3b94493a21f227962a01ec0b11fd855178985604 (diff) | |
| download | go-website-0.0.7.tar.gz go-website-0.0.7.tar.xz | |
Save the index in memory and only rebuild if clearedv0.0.7
Diffstat (limited to 'page')
| -rw-r--r-- | page/http.go | 10 | ||||
| -rw-r--r-- | page/page.go | 9 |
2 files changed, 19 insertions, 0 deletions
diff --git a/page/http.go b/page/http.go index 7e1d780..b3622be 100644 --- a/page/http.go +++ b/page/http.go @@ -8,6 +8,7 @@ import ( ) func SetupHandlers() { + http.HandleFunc("/rebuildIndex/", RebuildIndexHandler) http.Handle("/static/", StaticHandler()) http.HandleFunc("/", PageHandler) } @@ -43,6 +44,15 @@ func PageHandler(w http.ResponseWriter, r *http.Request) { } +func RebuildIndexHandler(w http.ResponseWriter, r *http.Request) { + if r.Method != "POST" { + pageIndex = nil + p := &Page{Path: "index"} + _, _ = p.Index() + } + return +} + func StaticHandler() (h http.Handler) { return http.StripPrefix("/static/", http.FileServer(http.Dir("static"))) } diff --git a/page/page.go b/page/page.go index 6e1d7d5..c5230c6 100644 --- a/page/page.go +++ b/page/page.go @@ -135,10 +135,17 @@ func (p Page) String() string { return fmt.Sprintf("Page: %s", p.Path) } +var pageIndex map[string]PageList + // Index returns a map of all pages below the current Page's Path seperated // into their respective tags If a Page has multiple tags it will be listed // under each func (p *Page) Index() (map[string]PageList, error) { + if pageIndex != nil { + return pageIndex, nil + } + fmt.Fprintln(os.Stderr, "Rebuilding index...") + out := make(map[string]PageList) var pageErr error @@ -173,5 +180,7 @@ func (p *Page) Index() (map[string]PageList, error) { return nil }) + pageIndex = out + return out, nil } |
