diff --git a/frontend/content/index.go b/frontend/content/index.go index a901351..d89811c 100644 --- a/frontend/content/index.go +++ b/frontend/content/index.go @@ -1,6 +1,13 @@ package content +import ( + "code.tokarch.uk/mainnika/nikita-tokarch-uk/frontend/ghost" +) + // Index content data type Index struct { _ interface{} `template:"index.go.tmpl"` + ghost.Meta + Pinned []ghost.Post + Posts []ghost.Post } diff --git a/frontend/renderer/index.go b/frontend/renderer/index.go index c4d8dd5..3de7767 100644 --- a/frontend/renderer/index.go +++ b/frontend/renderer/index.go @@ -4,6 +4,7 @@ import ( "net/http" "code.tokarch.uk/mainnika/nikita-tokarch-uk/frontend/content" + "code.tokarch.uk/mainnika/nikita-tokarch-uk/frontend/ghost" "code.tokarch.uk/mainnika/nikita-tokarch-uk/frontend/templates" routing "github.com/jackwhelpton/fasthttp-routing/v2" ) @@ -19,7 +20,23 @@ func (r *Renderer) rootRedirect(c *routing.Context) (err error) { // index handler renders index data func (r *Renderer) index(c *routing.Context) (err error) { + pinnedPageSlug := r.ContentConfig.Pinned + postsPerPage := r.ContentConfig.PostsPerPage + + pinnedPages, err := r.GhostClient.GetPageBySlug(pinnedPageSlug) + if err != nil { + return + } + + latestPosts, err := r.GhostClient.GetPosts(ghost.QueryLimit(postsPerPage)) + if err != nil { + return + } + indexContent := content.Index{ + Pinned: pinnedPages.Pages, + Meta: latestPosts.Meta, + Posts: latestPosts.Posts, } return c.Write(indexContent)