Add an in-process post event bus (#13)
CI / test (push) Successful in 6m16s

Handlers emit PostCreated and PostUpdated after a successful write. Store writes do not publish, and hidden roots are skipped.

Reviewed-on: #13
Co-authored-by: codegirl-007 <s.raide@gmail.com>
This commit was merged in pull request #13.
This commit is contained in:
2026-08-29 18:24:13 +00:00
committed by codegirl007
parent 19fea892f3
commit 911355ae35
10 changed files with 600 additions and 2 deletions
+47
View File
@@ -0,0 +1,47 @@
package events
import (
"net/url"
"strings"
)
// Image is a public photo already attached to a site post.
type Image struct {
URL string
Description string
}
// PostEvent is a Discord-free snapshot of a site post after a successful write.
type PostEvent struct {
PostID string
RootID string
ParentID string
Title string
Body string
City string
AuthorID string
AuthorName string
AuthorRole string
Images []Image
Permalink string
}
// PostCreated is emitted after a successful site create.
type PostCreated struct {
PostEvent
}
// PostUpdated is emitted after a successful site edit.
type PostUpdated struct {
PostEvent
}
// Permalink builds /questions/{root}#post-{id}, prefixed by baseURL when set.
func Permalink(baseURL, rootID, postID string) string {
path := "/questions/" + url.PathEscape(rootID) + "#post-" + url.PathEscape(postID)
base := strings.TrimRight(strings.TrimSpace(baseURL), "/")
if base == "" {
return path
}
return base + path
}