forked from
tangled.org/core
fork
Configure Feed
Select the types of activity you want to include in your feed.
this repo has no description
fork
Configure Feed
Select the types of activity you want to include in your feed.
1package db
2
3import (
4 "fmt"
5 "time"
6
7 "tangled.sh/tangled.sh/core/notifier"
8)
9
10type Event struct {
11 Rkey string `json:"rkey"`
12 Nsid string `json:"nsid"`
13 EventJson string `json:"event"`
14 Created int64 `json:"created"`
15}
16
17func (d *DB) InsertEvent(event Event, notifier *notifier.Notifier) error {
18
19 _, err := d.db.Exec(
20 `insert into events (rkey, nsid, event, created) values (?, ?, ?, ?)`,
21 event.Rkey,
22 event.Nsid,
23 event.EventJson,
24 time.Now().UnixNano(),
25 )
26
27 notifier.NotifyAll()
28
29 return err
30}
31
32func (d *DB) GetEvents(cursor int64) ([]Event, error) {
33 whereClause := ""
34 args := []any{}
35 if cursor > 0 {
36 whereClause = "where created > ?"
37 args = append(args, cursor)
38 }
39
40 query := fmt.Sprintf(`
41 select rkey, nsid, event, created
42 from events
43 %s
44 order by created asc
45 limit 100
46 `, whereClause)
47
48 rows, err := d.db.Query(query, args...)
49 if err != nil {
50 return nil, err
51 }
52 defer rows.Close()
53
54 var evts []Event
55 for rows.Next() {
56 var ev Event
57 if err := rows.Scan(&ev.Rkey, &ev.Nsid, &ev.EventJson, &ev.Created); err != nil {
58 return nil, err
59 }
60 evts = append(evts, ev)
61 }
62
63 if err := rows.Err(); err != nil {
64 return nil, err
65 }
66
67 return evts, nil
68}