Monorepo for Tangled
tangled.org
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}