forked from tangled.org/core
Monorepo for Tangled — https://tangled.org
at spindle 1.2 kB view raw
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 Created int64 `json:"created"` 14} 15 16func (d *DB) InsertEvent(event Event, notifier *notifier.Notifier) error { 17 18 _, err := d.db.Exec( 19 `insert into events (rkey, nsid, event) values (?, ?, ?)`, 20 event.Rkey, 21 event.Nsid, 22 event.EventJson, 23 ) 24 25 notifier.NotifyAll() 26 27 return err 28} 29 30func (d *DB) GetEvents(cursor int64) ([]Event, error) { 31 whereClause := "" 32 args := []any{} 33 if cursor > 0 { 34 whereClause = "where created > ?" 35 args = append(args, cursor) 36 } 37 38 query := fmt.Sprintf(` 39 select rkey, nsid, event, created 40 from events 41 %s 42 order by created asc 43 limit 100 44 `, whereClause) 45 46 rows, err := d.db.Query(query, args...) 47 if err != nil { 48 return nil, err 49 } 50 defer rows.Close() 51 52 var evts []Event 53 for rows.Next() { 54 var ev Event 55 if err := rows.Scan(&ev.Rkey, &ev.Nsid, &ev.EventJson, &ev.Created); err != nil { 56 return nil, err 57 } 58 evts = append(evts, ev) 59 } 60 61 if err := rows.Err(); err != nil { 62 return nil, err 63 } 64 65 return evts, nil 66}