forked from tangled.org/core
Monorepo for Tangled — https://tangled.org
1package db 2 3import ( 4 "fmt" 5 6 "tangled.sh/tangled.sh/core/knotserver/notifier" 7) 8 9type Event struct { 10 Rkey string `json:"rkey"` 11 Nsid string `json:"nsid"` 12 EventJson string `json:"event"` 13} 14 15func (d *DB) InsertEvent(event Event, notifier *notifier.Notifier) error { 16 _, err := d.db.Exec( 17 `insert into events (rkey, nsid, event) values (?, ?, ?)`, 18 event.Rkey, 19 event.Nsid, 20 event.EventJson, 21 ) 22 23 notifier.NotifyAll() 24 25 return err 26} 27 28func (d *DB) GetEvents(cursor string) ([]Event, error) { 29 whereClause := "" 30 args := []any{} 31 if cursor != "" { 32 whereClause = "where rkey > ?" 33 args = append(args, cursor) 34 } 35 36 query := fmt.Sprintf(` 37 select rkey, nsid, event 38 from events 39 %s 40 order by rkey asc 41 limit 100 42 `, whereClause) 43 44 rows, err := d.db.Query(query, args...) 45 if err != nil { 46 return nil, err 47 } 48 defer rows.Close() 49 50 var evts []Event 51 for rows.Next() { 52 var ev Event 53 rows.Scan(&ev.Rkey, &ev.Nsid, &ev.EventJson) 54 evts = append(evts, ev) 55 } 56 57 if err := rows.Err(); err != nil { 58 return nil, err 59 } 60 61 return evts, nil 62}