···
"Coves/internal/atproto/identity"
"Coves/internal/atproto/jetstream"
"Coves/internal/core/communities"
10
+
"Coves/internal/core/posts"
"Coves/internal/core/users"
···
log.Println("Started JWKS cache cleanup background job (runs hourly)")
262
+
// Initialize post service
263
+
postRepo := postgresRepo.NewPostRepository(db)
264
+
postService := posts.NewPostService(postRepo, communityService, defaultPDS)
266
+
// Start Jetstream consumer for posts
267
+
// This consumer indexes posts created in community repositories via the firehose
268
+
// Currently handles only CREATE operations - UPDATE/DELETE deferred until those features exist
269
+
postJetstreamURL := os.Getenv("POST_JETSTREAM_URL")
270
+
if postJetstreamURL == "" {
271
+
// Listen to post record creation events
272
+
postJetstreamURL = "ws://localhost:6008/subscribe?wantedCollections=social.coves.post.record"
275
+
postEventConsumer := jetstream.NewPostEventConsumer(postRepo, communityRepo, userService)
276
+
postJetstreamConnector := jetstream.NewPostJetstreamConnector(postEventConsumer, postJetstreamURL)
279
+
if startErr := postJetstreamConnector.Start(ctx); startErr != nil {
280
+
log.Printf("Post Jetstream consumer stopped: %v", startErr)
284
+
log.Printf("Started Jetstream post consumer: %s", postJetstreamURL)
285
+
log.Println(" - Indexing: social.coves.post.record CREATE operations")
286
+
log.Println(" - UPDATE/DELETE indexing deferred until those features are implemented")
routes.RegisterUserRoutes(r, userService)
routes.RegisterCommunityRoutes(r, communityService, authMiddleware)
log.Println("Community XRPC endpoints registered with OAuth authentication")
293
+
routes.RegisterPostRoutes(r, postService, authMiddleware)
294
+
log.Println("Post XRPC endpoints registered with OAuth authentication")
r.Get("/health", func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusOK)