diff --git a/blog.go b/blog.go index 82b0663..e3cd79b 100644 --- a/blog.go +++ b/blog.go @@ -3,6 +3,7 @@ package main import ( "log" "net/http" + "strconv" "github.com/CalebQ42/darkstorm-server/internal/backend" ) @@ -42,3 +43,30 @@ func blogHandle(w http.ResponseWriter, r *http.Request, blog string) { } sendContent(w, r, bl.HTMX(blogApp, r.Context()), bl.Title, bl.Favicon) } + +func blogListHandle(w http.ResponseWriter, r *http.Request) { + pag, _ := strconv.Atoi(r.URL.Query().Get("page")) + list, err := blogApp.BlogList(r.Context(), int64(pag)) + if err != nil { + w.WriteHeader(http.StatusInternalServerError) + sendContent(w, r, "Error getting page", "", "") + return + } + out := "" + for i := range list { + out += "
" + list[i].HTMX() + "
" + } + if pag > 0 || len(list) == 50 { + out += "" + } + sendContent(w, r, out, "", "") +} diff --git a/internal/blog/blog.go b/internal/blog/blog.go index 8057193..6346558 100644 --- a/internal/blog/blog.go +++ b/internal/blog/blog.go @@ -278,13 +278,22 @@ func (b *BlogApp) reqLatestBlogs(w http.ResponseWriter, r *http.Request) { type BlogListResult struct { ID string `json:"id" bson:"_id"` + Title string `json:"title" bson:"title"` CreateTime int `json:"createTime" bson:"createTime"` } +func (b BlogListResult) HTMX() string { + return "" + b.Title + "" +} + func (b *BlogApp) BlogList(ctx context.Context, page int64) ([]BlogListResult, error) { - res, err := b.blogCol.Find(ctx, bson.M{}, options.Find(). - SetProjection(bson.M{"_id": 1, "createTime": 1}). - SetSort(bson.M{"createTime": 1}). + res, err := b.blogCol.Find(ctx, bson.M{"staticPage": false, "draft": false}, options.Find(). + SetProjection(bson.M{"_id": 1, "createTime": 1, "title": 1}). + SetSort(bson.M{"createTime": -1}). SetLimit(50). SetSkip(page*50)) if err != nil { diff --git a/main.go b/main.go index 4a55683..08cdd34 100644 --- a/main.go +++ b/main.go @@ -122,6 +122,7 @@ func setupWebsite(mux *http.ServeMux) { } mux.HandleFunc("GET /files/{w...}", filesRequest) mux.HandleFunc("GET /portfolio", portfolioRequest) + mux.HandleFunc("GET /list", blogListHandle) mux.HandleFunc("/", mainHandle) }