diff options
| author | Samuel Johnson <[email protected]> | 2025-11-24 00:38:12 -0500 |
|---|---|---|
| committer | Samuel Johnson <[email protected]> | 2025-11-24 00:38:12 -0500 |
| commit | 177663c73f3d708120b975a74eebd0951177a53b (patch) | |
| tree | 9629bfced318c645496a31cc7844c7840605113c /cmd/web/handlers | |
| parent | 1692aea0951f1d46af01211bd3e32920c443505f (diff) | |
Add blog posts to front page
Diffstat (limited to 'cmd/web/handlers')
| -rw-r--r-- | cmd/web/handlers/blog.go | 30 | ||||
| -rw-r--r-- | cmd/web/handlers/routes.go | 5 |
2 files changed, 34 insertions, 1 deletions
diff --git a/cmd/web/handlers/blog.go b/cmd/web/handlers/blog.go index d995583..07ab361 100644 --- a/cmd/web/handlers/blog.go +++ b/cmd/web/handlers/blog.go @@ -1,14 +1,19 @@ package handlers import ( + "database/sql" "html/template" "log" "net/http" + + "paterissa.net/mblog/internal/models" ) type blogContext struct { err *log.Logger + db *sql.DB + Rows []models.Post Name string } @@ -18,6 +23,31 @@ func (ctx *blogContext) index(w http.ResponseWriter, r *http.Request) { return } + offset := r.URL.Query().Get("offset") + if offset == "" { + offset = "20" + } + + rows, err := ctx.db.Query("SELECT * FROM posts WHERE id < " + offset + " ORDER BY id DESC LIMIT 20;") + if err != nil { + ctx.err.Print(err.Error()) + http.Error(w, "Internal Server Error", 500) + return + } + defer rows.Close() + + for rows.Next() { + var p models.Post + + if err = rows.Scan(&p.Id, &p.Name, &p.Time, &p.Content); err != nil { + ctx.err.Print(err.Error()) + http.Error(w, "Internal Server Error", 500) + return + } + + ctx.Rows = append(ctx.Rows, p) + } + files := []string{ "ui/html/base.tmpl.html", "ui/html/music_player.tmpl.html", diff --git a/cmd/web/handlers/routes.go b/cmd/web/handlers/routes.go index 91c27a2..e9fd0f5 100644 --- a/cmd/web/handlers/routes.go +++ b/cmd/web/handlers/routes.go @@ -1,13 +1,16 @@ package handlers import ( + "database/sql" "net/http" + "paterissa.net/mblog/cmd/web/types" ) -func RegisterEndpoints(app types.Application) *http.ServeMux { +func RegisterEndpoints(app types.Application, db *sql.DB) *http.ServeMux { blog := blogContext{ err: app.Err, + db: db, Name: app.Env.Webmaster, } audio := fsContext{ |
