an app.bsky.* indexer

cleanup

Changed files
+23 -50
cmd
+4 -3
cmd/monarch/census.go
···
}
}
+
slog.Info("finished listing repos", "host", host)
+
cs.seenLk.Lock()
defer cs.seenLk.Unlock()
+
cs.seenHosts[host] = true
-
-
slog.Info("finished listing repos", "host", host)
}
func (cs *CensusService) Start(ctx context.Context, cctx *cli.Context) {
···
cs.listHosts(ctx, cctx)
slog.Info("finished with initial refresh, starting ticker")
-
t := time.NewTicker(time.Hour)
+
t := time.NewTicker(time.Minute * 5)
defer t.Stop()
for {
+1 -6
cmd/monarch/cursors.go
···
select {
case <-ctx.Done():
slog.Info("stopping cursor checkpointer", "err", ctx.Err())
-
-
slog.Info("persisting firehose cursor before exit", "seq", cs.firehoseSeq)
-
if err := cs.PersistFirehoseCursor(); err != nil {
-
slog.Error("error persisting firehose cursor", "err", err)
-
}
-
+
cs.PersistFirehoseCursor() // one final save
return
case <-t.C:
}
+18 -41
cmd/monarch/handlers.go
···
}
}
-
var validCollections = map[syntax.NSID]bool{
-
syntax.NSID("app.bsky.actor.profile"): false,
-
syntax.NSID("app.bsky.feed.generator"): true,
-
syntax.NSID("app.bsky.labeler.service"): true,
-
}
-
-
func jsonEncode(model any, data *[]byte) ([]byte, error) {
-
var (
-
body []byte
-
err error
-
)
-
-
switch model.(type) {
-
case appbsky.ActorProfile:
-
var out appbsky.ActorProfile
-
out.UnmarshalCBOR(bytes.NewReader(*data))
-
body, err = json.Marshal(out)
-
-
case appbsky.FeedGenerator:
-
var out appbsky.FeedGenerator
-
out.UnmarshalCBOR(bytes.NewReader(*data))
-
body, err = json.Marshal(out)
-
-
case appbsky.LabelerService:
-
var out appbsky.LabelerService
-
out.UnmarshalCBOR(bytes.NewReader(*data))
-
body, err = json.Marshal(out)
-
}
-
-
return body, err
+
var trackedCollections = map[syntax.NSID]bool{
+
syntax.NSID("app.bsky.actor.profile"): false,
+
syntax.NSID("app.bsky.feed.generator"): true,
+
syntax.NSID("app.bsky.labeler.service"): true,
+
syntax.NSID("app.bsky.graph.list"): true,
+
syntax.NSID("app.bsky.graph.verification"): true,
+
syntax.NSID("app.bsky.graph.starterpack"): true,
}
func (hs *HandlerService) HandleUpsert(ctx context.Context, repo string, rev string, path string, rec *[]byte, cid *cid.Cid, action Action) error {
···
return fmt.Errorf("error parsing at-uri: %w", err)
}
-
valid := validCollections[uri.Collection()]
-
if !valid {
+
tracked := trackedCollections[uri.Collection()]
+
if !tracked {
return nil
}
var body []byte
switch uri.Collection() {
case syntax.NSID("app.bsky.actor.profile"):
-
if body, err = jsonEncode(appbsky.ActorProfile{}, rec); err != nil {
-
return fmt.Errorf("error parsing actor profile: %w", err)
-
}
+
var out appbsky.ActorProfile
+
out.UnmarshalCBOR(bytes.NewReader(*rec))
+
body, err = json.Marshal(out)
case syntax.NSID("app.bsky.feed.generator"):
-
if body, err = jsonEncode(appbsky.FeedGenerator{}, rec); err != nil {
-
return fmt.Errorf("error parsing feed generator: %w", err)
-
}
+
var out appbsky.FeedGenerator
+
out.UnmarshalCBOR(bytes.NewReader(*rec))
+
body, err = json.Marshal(out)
case syntax.NSID("app.bsky.labeler.service"):
-
if body, err = jsonEncode(appbsky.LabelerService{}, rec); err != nil {
-
return fmt.Errorf("error parsing labeler service: %w", err)
-
}
+
var out appbsky.LabelerService
+
out.UnmarshalCBOR(bytes.NewReader(*rec))
+
body, err = json.Marshal(out)
}
switch action {