46 lines
1.6 KiB
Go
46 lines
1.6 KiB
Go
/*
|
|
Package postctl implements all the web blog features.
|
|
|
|
Routes
|
|
|
|
Public
|
|
/blog Blog index
|
|
/blog.rss RSS feed
|
|
/blog.atom Atom feed
|
|
/archive Blog archives
|
|
/tagged Index of all blog tags
|
|
/tagged/<tag> View posts by tag
|
|
/<fragment> View blog entry by its URL fragment
|
|
|
|
Admin Only
|
|
/blog/edit Create or edit blog post
|
|
/blog/delete Confirm deletion of blog post
|
|
/blog/drafts View all draft entries
|
|
/blog/private View all private entries
|
|
|
|
Related Models
|
|
|
|
posts
|
|
|
|
Description
|
|
|
|
Each post is in its own JsonDB document at `posts/entries/<id>.json` and
|
|
contains all its data (title, body, tags, timestamps, etc.)
|
|
|
|
For faster retrieval and caching of overall post data, there is a Blog Index
|
|
that gets saved in JsonDB at `posts/index.json`. The index summarizes ALL of
|
|
the blog posts by caching their basic details (ID, URL fragment, title,
|
|
tags, created time). This document is used for getting a narrower list of posts
|
|
to work with, for index pages (with pagination), "by tagged" pages, etc.
|
|
|
|
Usually the front-end settles on 5 or 10 posts it wants to render, and it only
|
|
had to look at the index. For the archive view where it only needs the blog
|
|
titles, it already has these too. For the posts where it needs the full body,
|
|
it has the IDs and can just select each one pretty quickly.
|
|
|
|
In case anything goes wrong with the blog index, you can always delete the
|
|
`posts/index.json` and it will be re-generated from scratch in a one-time scan
|
|
of the entire posts DB (opening every document).
|
|
*/
|
|
package postctl
|