Monorepo for Tangled tangled.org
6

Configure Feed

Select the types of activity you want to include in your feed.

at icy/ytnwlw 1.8 kB View raw
1package db 2 3import ( 4 "encoding/json" 5 "fmt" 6 7 "github.com/bluesky-social/indigo/atproto/syntax" 8 "tangled.org/core/eventstream" 9 "tangled.org/core/notifier" 10 "tangled.org/core/tid" 11) 12 13func (d *DB) InsertEvent(event eventstream.Event, n *notifier.Notifier) error { 14 return eventstream.Insert(d.db, event, n) 15} 16 17func (d *DB) EmitDIDAssign(n *notifier.Notifier, ownerDid, repoName, repoDid string) error { 18 payload := RepoDIDAssign{ 19 OwnerDid: ownerDid, 20 RepoName: repoName, 21 RepoDid: repoDid, 22 } 23 24 eventJson, err := json.Marshal(payload) 25 if err != nil { 26 return fmt.Errorf("marshal didAssign event: %w", err) 27 } 28 29 return d.InsertEvent(eventstream.Event{ 30 Rkey: tid.TID(), 31 Nsid: RepoDIDAssignNSID, 32 EventJson: eventJson, 33 }, n) 34} 35 36func (d *DB) EmitKnotMemberUpdate(n *notifier.Notifier, op AclOp, subject syntax.DID) error { 37 payload := KnotMemberUpdate{ 38 Op: op, 39 Subject: subject.String(), 40 } 41 42 eventJson, err := json.Marshal(payload) 43 if err != nil { 44 return fmt.Errorf("marshal memberUpdate event: %w", err) 45 } 46 47 return d.InsertEvent(eventstream.Event{ 48 Rkey: tid.TID(), 49 Nsid: KnotMemberUpdateNSID, 50 EventJson: eventJson, 51 }, n) 52} 53 54func (d *DB) EmitCollaboratorUpdate(n *notifier.Notifier, op AclOp, subject, repoDid syntax.DID) error { 55 payload := RepoCollaboratorUpdate{ 56 Op: op, 57 Subject: subject.String(), 58 Repo: repoDid.String(), 59 } 60 61 eventJson, err := json.Marshal(payload) 62 if err != nil { 63 return fmt.Errorf("marshal collaboratorUpdate event: %w", err) 64 } 65 66 return d.InsertEvent(eventstream.Event{ 67 Rkey: tid.TID(), 68 Nsid: RepoCollaboratorUpdateNSID, 69 EventJson: eventJson, 70 }, n) 71} 72 73func (d *DB) GetEvents(cursor int64, limit int) ([]eventstream.Event, error) { 74 return eventstream.List(d.db, cursor, limit) 75}