···
···
log.Fatalf("failed to create jetstream client: %v", err)
-
err = dbCnx.QueryRowContext(ctx, "select val from config where key = 'cursor'").Scan(&cursor)
-
if err == sql.ErrNoRows {
-
logger.Info("no persisted cursor found")
-
logger.Error("failed obtaining past cursor", "err", err)
-
logger.Info("found cursor in db", "cursor", cursor)
-
var connectCursor *int64
-
connectCursor = &cursor
-
if err := jetstreamClient.ConnectAndRead(ctx, connectCursor); err != nil {
-
log.Fatalf("failed to connect: %v", err)
···
-
delta := time.Now().UTC().UnixMicro() - cursor
-
h.logger.Info("persisting cursor", "cursor", cursor, "delta", delta)
updateQuery := "insert into config (key, val) values ('cursor', ?) on conflict do update set val = ?"
if _, err := h.db.ExecContext(ctx, updateQuery, cursor, cursor); err != nil {
h.logger.Error("failed persisting cursor", "err", err)
···
···
log.Fatalf("failed to create jetstream client: %v", err)
+
// https://bsky.app/profile/icyphox.sh/post/3lkt5wpjbcc2f
+
err = dbCnx.QueryRowContext(ctx, "select val from config where key = 'cursor'").Scan(&cursor)
+
if err == sql.ErrNoRows {
+
logger.Info("no persisted cursor found")
+
logger.Error("failed obtaining past cursor", "err", err)
+
logger.Info("found cursor in db", "cursor", cursor)
+
var connectCursor *int64
+
connectCursor = &cursor
+
connCtx, cancel := context.WithCancel(ctx)
+
if err := jetstreamClient.ConnectAndRead(connCtx, connectCursor); err != nil {
+
logger.Error("error in ConnectAndRead", "err", err)
+
logger.Info("stopping")
+
logger.Info("restarting")
···
+
delta := (time.Now().UTC().UnixMicro() - cursor) / 1_000_000
+
h.logger.Info("persisting cursor", "cursor", cursor, "deltaSeconds", delta)
updateQuery := "insert into config (key, val) values ('cursor', ?) on conflict do update set val = ?"
if _, err := h.db.ExecContext(ctx, updateQuery, cursor, cursor); err != nil {
h.logger.Error("failed persisting cursor", "err", err)