···6868type processor func(context.Context, *models.Event) error
69697070func (j *JetstreamClient) withDidFilter(processFunc processor) processor {
7171- // empty filter => all dids allowed
7272- if len(j.wantedDids) == 0 {
7373- return processFunc
7474- }
7571 // since this closure references j.WantedDids; it should auto-update
7672 // existing instances of the closure when j.WantedDids is mutated
7773 return func(ctx context.Context, evt *models.Event) error {
7474+7575+ // empty filter => all dids allowed
7676+ if len(j.wantedDids) == 0 {
7777+ return processFunc(ctx, evt)
7878+ }
7979+7880 if _, ok := j.wantedDids[evt.Did]; ok {
7981 return processFunc(ctx, evt)
8082 } else {
+5-5
knotserver/handler.go
···5252 return nil, fmt.Errorf("failed to setup enforcer: %w", err)
5353 }
54545555- err = h.jc.StartJetstream(ctx, h.processMessages)
5656- if err != nil {
5757- return nil, fmt.Errorf("failed to start jetstream: %w", err)
5858- }
5959-6055 // Check if the knot knows about any Dids;
6156 // if it does, it is already initialized and we can repopulate the
6257 // Jetstream subscriptions.
···7166 for _, d := range dids {
7267 h.jc.AddDid(d)
7368 }
6969+ }
7070+7171+ err = h.jc.StartJetstream(ctx, h.processMessages)
7272+ if err != nil {
7373+ return nil, fmt.Errorf("failed to start jetstream: %w", err)
7474 }
75757676 r.Get("/", h.Index)
+46-42
knotserver/ingester.go
···2525 "tangled.sh/tangled.sh/core/workflow"
2626)
27272828-func (h *Handle) processPublicKey(ctx context.Context, did string, record tangled.PublicKey) error {
2828+func (h *Handle) processPublicKey(ctx context.Context, event *models.Event) error {
2929 l := log.FromContext(ctx)
3030+ raw := json.RawMessage(event.Commit.Record)
3131+ did := event.Did
3232+3333+ var record tangled.PublicKey
3434+ if err := json.Unmarshal(raw, &record); err != nil {
3535+ return fmt.Errorf("failed to unmarshal record: %w", err)
3636+ }
3737+3038 pk := db.PublicKey{
3139 Did: did,
3240 PublicKey: record,
···3947 return nil
4048}
41494242-func (h *Handle) processKnotMember(ctx context.Context, did string, record tangled.KnotMember) error {
5050+func (h *Handle) processKnotMember(ctx context.Context, event *models.Event) error {
4351 l := log.FromContext(ctx)
5252+ raw := json.RawMessage(event.Commit.Record)
5353+ did := event.Did
5454+5555+ var record tangled.KnotMember
5656+ if err := json.Unmarshal(raw, &record); err != nil {
5757+ return fmt.Errorf("failed to unmarshal record: %w", err)
5858+ }
44594560 if record.Domain != h.c.Server.Hostname {
4661 l.Error("domain mismatch", "domain", record.Domain, "expected", h.c.Server.Hostname)
···7287 return nil
7388}
74897575-func (h *Handle) processPull(ctx context.Context, did string, record tangled.RepoPull) error {
9090+func (h *Handle) processPull(ctx context.Context, event *models.Event) error {
9191+ raw := json.RawMessage(event.Commit.Record)
9292+ did := event.Did
9393+9494+ var record tangled.RepoPull
9595+ if err := json.Unmarshal(raw, &record); err != nil {
9696+ return fmt.Errorf("failed to unmarshal record: %w", err)
9797+ }
9898+7699 l := log.FromContext(ctx)
77100 l = l.With("handler", "processPull")
78101 l = l.With("did", did)
···200223 return nil
201224 }
202225203203- event := db.Event{
226226+ ev := db.Event{
204227 Rkey: TID(),
205228 Nsid: tangled.PipelineNSID,
206229 EventJson: string(eventJson),
207230 }
208231209209- return h.db.InsertEvent(event, h.n)
232232+ return h.db.InsertEvent(ev, h.n)
210233}
211234212235// duplicated from add collaborator
213213-func (h *Handle) processCollaborator(ctx context.Context, did string, record tangled.RepoCollaborator) error {
236236+func (h *Handle) processCollaborator(ctx context.Context, event *models.Event) error {
237237+ raw := json.RawMessage(event.Commit.Record)
238238+ did := event.Did
239239+240240+ var record tangled.RepoCollaborator
241241+ if err := json.Unmarshal(raw, &record); err != nil {
242242+ return fmt.Errorf("failed to unmarshal record: %w", err)
243243+ }
244244+214245 repoAt, err := syntax.ParseATURI(record.Repo)
215246 if err != nil {
216247 return err
···243274 didSlashRepo, _ := securejoin.SecureJoin(owner.DID.String(), repo.Name)
244275245276 // check perms for this user
246246- if ok, err := h.e.IsCollaboratorInviteAllowed(owner.DID.String(), rbac.ThisServer, didSlashRepo); !ok || err != nil {
277277+ if ok, err := h.e.IsCollaboratorInviteAllowed(did, rbac.ThisServer, didSlashRepo); !ok || err != nil {
247278 return fmt.Errorf("insufficient permissions: %w", err)
248279 }
249280···303334}
304335305336func (h *Handle) processMessages(ctx context.Context, event *models.Event) error {
306306- did := event.Did
307337 if event.Kind != models.EventKindCommit {
308338 return nil
309339 }
···317347 }
318348 }()
319349320320- raw := json.RawMessage(event.Commit.Record)
321321-322350 switch event.Commit.Collection {
323351 case tangled.PublicKeyNSID:
324324- var record tangled.PublicKey
325325- if err := json.Unmarshal(raw, &record); err != nil {
326326- return fmt.Errorf("failed to unmarshal record: %w", err)
327327- }
328328- if err := h.processPublicKey(ctx, did, record); err != nil {
329329- return fmt.Errorf("failed to process public key: %w", err)
330330- }
331331-352352+ err = h.processPublicKey(ctx, event)
332353 case tangled.KnotMemberNSID:
333333- var record tangled.KnotMember
334334- if err := json.Unmarshal(raw, &record); err != nil {
335335- return fmt.Errorf("failed to unmarshal record: %w", err)
336336- }
337337- if err := h.processKnotMember(ctx, did, record); err != nil {
338338- return fmt.Errorf("failed to process knot member: %w", err)
339339- }
340340-354354+ err = h.processKnotMember(ctx, event)
341355 case tangled.RepoPullNSID:
342342- var record tangled.RepoPull
343343- if err := json.Unmarshal(raw, &record); err != nil {
344344- return fmt.Errorf("failed to unmarshal record: %w", err)
345345- }
346346- if err := h.processPull(ctx, did, record); err != nil {
347347- return fmt.Errorf("failed to process knot member: %w", err)
348348- }
349349-356356+ err = h.processPull(ctx, event)
350357 case tangled.RepoCollaboratorNSID:
351351- var record tangled.RepoCollaborator
352352- if err := json.Unmarshal(raw, &record); err != nil {
353353- return fmt.Errorf("failed to unmarshal record: %w", err)
354354- }
355355- if err := h.processCollaborator(ctx, did, record); err != nil {
356356- return fmt.Errorf("failed to process knot member: %w", err)
357357- }
358358+ err = h.processCollaborator(ctx, event)
359359+ }
358360361361+ if err != nil {
362362+ h.l.Debug("failed to process event", "nsid", event.Commit.Collection, "err", err)
359363 }
360364361361- return err
365365+ return nil
362366}
+3-1
log/log.go
···99// NewHandler sets up a new slog.Handler with the service name
1010// as an attribute
1111func NewHandler(name string) slog.Handler {
1212- handler := slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{})
1212+ handler := slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{
1313+ Level: slog.LevelDebug,
1414+ })
13151416 var attrs []slog.Attr
1517 attrs = append(attrs, slog.Attr{Key: "service", Value: slog.StringValue(name)})