···48 rkey text not null,
49 nsid text not null,
50 event text not null, -- json
051 primary key (rkey, nsid)
52 );
53 `)
···48 rkey text not null,
49 nsid text not null,
50 event text not null, -- json
51+ created integer not null default (strftime('%s', 'now')),
52 primary key (rkey, nsid)
53 );
54 `)
+8-3
knotserver/events.go
···4 "context"
5 "encoding/json"
6 "net/http"
07 "time"
89 "github.com/gorilla/websocket"
···42 }
43 }()
4445- cursor := r.URL.Query().Get("cursor")
00004647 // complete backfill first before going to live data
48 l.Debug("going through backfill", "cursor", cursor)
···74 }
75}
7677-func (h *Handle) streamOps(conn *websocket.Conn, cursor *string) error {
78 events, err := h.db.GetEvents(*cursor)
79 if err != nil {
80 h.l.Error("failed to fetch events from db", "err", err, "cursor", cursor)
···105 h.l.Debug("err", "err", err)
106 return err
107 }
108- *cursor = event.Rkey
109 }
110111 return nil
···4 "context"
5 "encoding/json"
6 "net/http"
7+ "strconv"
8 "time"
910 "github.com/gorilla/websocket"
···43 }
44 }()
4546+ cursorStr := r.URL.Query().Get("cursor")
47+ cursor, err := strconv.ParseInt(cursorStr, 10, 64)
48+ if err != nil {
49+ l.Error("empty or invalid cursor, defaulting to zero", "invalidCursor", cursorStr)
50+ }
5152 // complete backfill first before going to live data
53 l.Debug("going through backfill", "cursor", cursor)
···79 }
80}
8182+func (h *Handle) streamOps(conn *websocket.Conn, cursor *int64) error {
83 events, err := h.db.GetEvents(*cursor)
84 if err != nil {
85 h.l.Error("failed to fetch events from db", "err", err, "cursor", cursor)
···110 h.l.Debug("err", "err", err)
111 return err
112 }
113+ *cursor = event.Created
114 }
115116 return nil
+1-1
nix/vm.nix
···21 g = config.services.tangled-knot.gitUser;
22 in [
23 "d /var/lib/knot 0770 ${u} ${g} - -" # Create the directory first
24- "f+ /var/lib/knot/secret 0660 ${u} ${g} - KNOT_SERVER_SECRET=40b4db20544e37a12ba3ed7353d4d4421a30e0593385068d2ef85263495794d8"
25 ];
26 services.tangled-knot = {
27 enable = true;
···21 g = config.services.tangled-knot.gitUser;
22 in [
23 "d /var/lib/knot 0770 ${u} ${g} - -" # Create the directory first
24+ "f+ /var/lib/knot/secret 0660 ${u} ${g} - KNOT_SERVER_SECRET=16154910ef55fe48121082c0b51fc0e360a8b15eb7bda7991d88dc9f7684427a"
25 ];
26 services.tangled-knot = {
27 enable = true;