A community based topic aggregation platform built on atproto
1package routes
2
3import (
4 "Coves/internal/api/handlers/community"
5 "Coves/internal/core/communities"
6
7 "github.com/go-chi/chi/v5"
8)
9
10// RegisterCommunityRoutes registers community-related XRPC endpoints on the router
11// Implements social.coves.community.* lexicon endpoints
12func RegisterCommunityRoutes(r chi.Router, service communities.Service) {
13 // Initialize handlers
14 createHandler := community.NewCreateHandler(service)
15 getHandler := community.NewGetHandler(service)
16 listHandler := community.NewListHandler(service)
17 searchHandler := community.NewSearchHandler(service)
18 subscribeHandler := community.NewSubscribeHandler(service)
19
20 // Query endpoints (GET)
21 // social.coves.community.get - get a single community by identifier
22 r.Get("/xrpc/social.coves.community.get", getHandler.HandleGet)
23
24 // social.coves.community.list - list communities with filters
25 r.Get("/xrpc/social.coves.community.list", listHandler.HandleList)
26
27 // social.coves.community.search - search communities
28 r.Get("/xrpc/social.coves.community.search", searchHandler.HandleSearch)
29
30 // Procedure endpoints (POST) - write-forward operations
31 // social.coves.community.create - create a new community
32 r.Post("/xrpc/social.coves.community.create", createHandler.HandleCreate)
33
34 // social.coves.community.subscribe - subscribe to a community
35 r.Post("/xrpc/social.coves.community.subscribe", subscribeHandler.HandleSubscribe)
36
37 // social.coves.community.unsubscribe - unsubscribe from a community
38 r.Post("/xrpc/social.coves.community.unsubscribe", subscribeHandler.HandleUnsubscribe)
39
40 // TODO: Add update and delete handlers when implemented
41 // r.Post("/xrpc/social.coves.community.update", updateHandler.HandleUpdate)
42 // r.Post("/xrpc/social.coves.community.delete", deleteHandler.HandleDelete)
43}