diff --git a/blog.go b/blog.go index e3cd79b..c5607e3 100644 --- a/blog.go +++ b/blog.go @@ -29,7 +29,7 @@ func latestBlogsHandle(w http.ResponseWriter, r *http.Request) { } func blogHandle(w http.ResponseWriter, r *http.Request, blog string) { - bl, err := blogApp.Blog(r.Context(), blog) + bl, err := blogApp.Blog(r.Context(), blog, true) if err != nil { if err == backend.ErrNotFound { w.WriteHeader(404) diff --git a/editor.go b/editor.go index 171866b..6791bed 100644 --- a/editor.go +++ b/editor.go @@ -166,7 +166,7 @@ func editorEdit(w http.ResponseWriter, r *http.Request) { if blogID == "new" { bl = &blog.Blog{} } else { - bl, err = blogApp.Blog(r.Context(), r.URL.Query().Get("blog")) + bl, err = blogApp.Blog(r.Context(), r.URL.Query().Get("blog"), false) if err != nil { log.Println("error getting blog for editor:", err) sendContent(w, r, "ERROR", "", "") @@ -252,7 +252,7 @@ func editorPost(w http.ResponseWriter, r *http.Request) { sendContent(w, r, "
Server error updating blog
", "", "") return } - old, err := blogApp.Blog(r.Context(), newBlog.ID) + old, err := blogApp.Blog(r.Context(), newBlog.ID, false) if err != nil { log.Println("error getting old blog to be updated:", err) sendContent(w, r, "Updated!
", "", "") diff --git a/internal/blog/blog.go b/internal/blog/blog.go index 9786e0e..bc753f7 100644 --- a/internal/blog/blog.go +++ b/internal/blog/blog.go @@ -79,12 +79,16 @@ func (b *BlogApp) GetAuthor(ctx context.Context, blog *Blog) (*Author, error) { return &author, err } -func (b *BlogApp) Blog(ctx context.Context, ID string) (*Blog, error) { - b.cacheMutex.RLock() - blog, has := b.blogCache[ID] - b.cacheMutex.RUnlock() - if has { - return &blog, nil +func (b *BlogApp) Blog(ctx context.Context, ID string, useCache bool) (*Blog, error) { + var blog Blog + if useCache { + b.cacheMutex.RLock() + var has bool + blog, has = b.blogCache[ID] + b.cacheMutex.RUnlock() + if has { + return &blog, nil + } } res := b.blogCol.FindOne(ctx, bson.M{"_id": ID, "draft": false}) if res.Err() != nil { @@ -118,7 +122,7 @@ func (b *BlogApp) reqBlog(w http.ResponseWriter, r *http.Request) { backend.ReturnError(w, http.StatusBadRequest, "badRequest", "Must provide a blogID") return } - blog, err := b.Blog(r.Context(), blogID) + blog, err := b.Blog(r.Context(), blogID, true) if err != nil { if err == backend.ErrNotFound { backend.ReturnError(w, http.StatusNotFound, "notFound", "Not blog found with the given ID")