Mirror of @tangled.org/core. Running on a Raspberry Pi Zero 2

appview: add posthog to knotstream

Signed-off-by: oppiliappan <me@oppi.li>

oppi.li e9dac7d1 1c8c3ea1

verified
+18 -6
+17 -5
appview/state/knotstream.go
··· 13 13 kc "tangled.sh/tangled.sh/core/knotclient" 14 14 "tangled.sh/tangled.sh/core/log" 15 15 "tangled.sh/tangled.sh/core/rbac" 16 + 17 + "github.com/posthog/posthog-go" 16 18 ) 17 19 18 - func KnotstreamConsumer(c *config.Config, d *db.DB, enforcer *rbac.Enforcer) (*kc.EventConsumer, error) { 20 + func KnotstreamConsumer(c *config.Config, d *db.DB, enforcer *rbac.Enforcer, posthog posthog.Client) (*kc.EventConsumer, error) { 19 21 knots, err := db.GetCompletedRegistrations(d) 20 22 if err != nil { 21 23 return nil, err ··· 35 33 36 34 cfg := kc.ConsumerConfig{ 37 35 Sources: srcs, 38 - ProcessFunc: knotstreamIngester(d, enforcer), 36 + ProcessFunc: knotstreamIngester(d, enforcer, posthog, c.Core.Dev), 39 37 RetryInterval: c.Knotstream.RetryInterval, 40 38 MaxRetryInterval: c.Knotstream.MaxRetryInterval, 41 39 ConnectionTimeout: c.Knotstream.ConnectionTimeout, ··· 49 47 return kc.NewEventConsumer(cfg), nil 50 48 } 51 49 52 - func knotstreamIngester(d *db.DB, enforcer *rbac.Enforcer) kc.ProcessFunc { 50 + func knotstreamIngester(d *db.DB, enforcer *rbac.Enforcer, posthog posthog.Client, dev bool) kc.ProcessFunc { 53 51 return func(source kc.EventSource, msg kc.Message) error { 54 52 switch msg.Nsid { 55 53 case tangled.GitRefUpdateNSID: 56 - return ingestRefUpdate(d, enforcer, source, msg) 54 + return ingestRefUpdate(d, enforcer, posthog, dev, source, msg) 57 55 case tangled.PipelineNSID: 58 56 // TODO 59 57 } ··· 62 60 } 63 61 } 64 62 65 - func ingestRefUpdate(d *db.DB, enforcer *rbac.Enforcer, source kc.EventSource, msg kc.Message) error { 63 + func ingestRefUpdate(d *db.DB, enforcer *rbac.Enforcer, pc posthog.Client, dev bool, source kc.EventSource, msg kc.Message) error { 66 64 var record tangled.GitRefUpdate 67 65 err := json.Unmarshal(msg.EventJson, &record) 68 66 if err != nil { ··· 106 104 } 107 105 if err := db.AddPunch(d, punch); err != nil { 108 106 return err 107 + } 108 + 109 + if !dev { 110 + err = pc.Enqueue(posthog.Capture{ 111 + DistinctId: record.CommitterDid, 112 + Event: "git_ref_update", 113 + }) 114 + if err != nil { 115 + // non-fatal, TODO: log this 116 + } 109 117 } 110 118 111 119 return nil
+1 -1
appview/state/state.go
··· 109 109 return nil, fmt.Errorf("failed to start jetstream watcher: %w", err) 110 110 } 111 111 112 - knotstream, err := KnotstreamConsumer(config, d, enforcer) 112 + knotstream, err := KnotstreamConsumer(config, d, enforcer, posthog) 113 113 if err != nil { 114 114 return nil, fmt.Errorf("failed to start knotstream consumer: %w", err) 115 115 }