an app.bsky.* indexer

Compare changes

Choose any two refs to compare.

Changed files
+25 -6
cmd
+20
cmd/monarch/handlers.go
···
"context"
"encoding/json"
"fmt"
+
"log/slog"
appbsky "github.com/bluesky-social/indigo/api/bsky"
"github.com/bluesky-social/indigo/atproto/syntax"
···
var out appbsky.LabelerService
out.UnmarshalCBOR(bytes.NewReader(*rec))
body, err = json.Marshal(out)
+
+
case syntax.NSID("app.bsky.graph.list"):
+
var out appbsky.GraphList
+
out.UnmarshalCBOR(bytes.NewReader(*rec))
+
body, err = json.Marshal(out)
+
+
case syntax.NSID("app.bsky.graph.verification"):
+
var out appbsky.GraphVerification
+
out.UnmarshalCBOR(bytes.NewReader(*rec))
+
body, err = json.Marshal(out)
+
+
case syntax.NSID("app.bsky.graph.starterpack"):
+
var out appbsky.GraphStarterpack
+
out.UnmarshalCBOR(bytes.NewReader(*rec))
+
body, err = json.Marshal(out)
+
+
default:
+
slog.Error("tracked collection missing handler", "collection", uri.Collection())
+
return nil
}
switch action {
+1 -1
cmd/monarch/backfill.go
···
ParallelBackfills: cctx.Int("backfill-workers"),
ParallelRecordCreates: cctx.Int("backfill-consumers"),
NSIDFilter: "",
-
SyncRequestsPerSecond: 10,
+
SyncRequestsPerSecond: cctx.Int("sync-requests-limit"),
RelayHost: "https://" + cctx.String("relay-host"),
}
+1 -4
cmd/monarch/cursors.go
···
import (
"context"
"log/slog"
-
"sync"
"time"
"gorm.io/gorm"
)
type CursorService struct {
-
store *gorm.DB
-
-
firehoseLk sync.Mutex
+
store *gorm.DB
firehoseSeq int64
}
+3 -1
cmd/monarch/firehose.go
···
func NewFirehoseConnection(ctx context.Context, cctx *cli.Context, cursorSvc *CursorService) (*websocket.Conn, error) {
url := fmt.Sprintf("wss://%s/xrpc/com.atproto.sync.subscribeRepos", cctx.String("relay-host"))
curs, err := cursorSvc.GetFirehoseCursor()
-
if err == nil { // reversed
+
if err != nil {
+
slog.Error("error getting firehose cursor", "err", err)
+
} else if curs > 0 {
url += fmt.Sprintf("?cursor=%d", curs)
}