this repo has no description
1package posthog_service 2 3import ( 4 "context" 5 "log" 6 7 "github.com/posthog/posthog-go" 8 "tangled.org/core/appview/db" 9 "tangled.org/core/appview/models" 10 "tangled.org/core/appview/notify" 11) 12 13type posthogNotifier struct { 14 client posthog.Client 15 notify.BaseNotifier 16} 17 18func NewPosthogNotifier(client posthog.Client) notify.Notifier { 19 return &posthogNotifier{ 20 client, 21 notify.BaseNotifier{}, 22 } 23} 24 25var _ notify.Notifier = &posthogNotifier{} 26 27func (n *posthogNotifier) NewRepo(ctx context.Context, repo *models.Repo) { 28 err := n.client.Enqueue(posthog.Capture{ 29 DistinctId: repo.Did, 30 Event: "new_repo", 31 Properties: posthog.Properties{"repo": repo.Name, "repo_at": repo.RepoAt()}, 32 }) 33 if err != nil { 34 log.Println("failed to enqueue posthog event:", err) 35 } 36} 37 38func (n *posthogNotifier) NewStar(ctx context.Context, star *db.Star) { 39 err := n.client.Enqueue(posthog.Capture{ 40 DistinctId: star.StarredByDid, 41 Event: "star", 42 Properties: posthog.Properties{"repo_at": star.RepoAt.String()}, 43 }) 44 if err != nil { 45 log.Println("failed to enqueue posthog event:", err) 46 } 47} 48 49func (n *posthogNotifier) DeleteStar(ctx context.Context, star *db.Star) { 50 err := n.client.Enqueue(posthog.Capture{ 51 DistinctId: star.StarredByDid, 52 Event: "unstar", 53 Properties: posthog.Properties{"repo_at": star.RepoAt.String()}, 54 }) 55 if err != nil { 56 log.Println("failed to enqueue posthog event:", err) 57 } 58} 59 60func (n *posthogNotifier) NewIssue(ctx context.Context, issue *models.Issue) { 61 err := n.client.Enqueue(posthog.Capture{ 62 DistinctId: issue.Did, 63 Event: "new_issue", 64 Properties: posthog.Properties{ 65 "repo_at": issue.RepoAt.String(), 66 "issue_id": issue.IssueId, 67 }, 68 }) 69 if err != nil { 70 log.Println("failed to enqueue posthog event:", err) 71 } 72} 73 74func (n *posthogNotifier) NewPull(ctx context.Context, pull *models.Pull) { 75 err := n.client.Enqueue(posthog.Capture{ 76 DistinctId: pull.OwnerDid, 77 Event: "new_pull", 78 Properties: posthog.Properties{ 79 "repo_at": pull.RepoAt, 80 "pull_id": pull.PullId, 81 }, 82 }) 83 if err != nil { 84 log.Println("failed to enqueue posthog event:", err) 85 } 86} 87 88func (n *posthogNotifier) NewPullComment(ctx context.Context, comment *models.PullComment) { 89 err := n.client.Enqueue(posthog.Capture{ 90 DistinctId: comment.OwnerDid, 91 Event: "new_pull_comment", 92 Properties: posthog.Properties{ 93 "repo_at": comment.RepoAt, 94 "pull_id": comment.PullId, 95 }, 96 }) 97 if err != nil { 98 log.Println("failed to enqueue posthog event:", err) 99 } 100} 101 102func (n *posthogNotifier) NewFollow(ctx context.Context, follow *models.Follow) { 103 err := n.client.Enqueue(posthog.Capture{ 104 DistinctId: follow.UserDid, 105 Event: "follow", 106 Properties: posthog.Properties{"subject": follow.SubjectDid}, 107 }) 108 if err != nil { 109 log.Println("failed to enqueue posthog event:", err) 110 } 111} 112 113func (n *posthogNotifier) DeleteFollow(ctx context.Context, follow *models.Follow) { 114 err := n.client.Enqueue(posthog.Capture{ 115 DistinctId: follow.UserDid, 116 Event: "unfollow", 117 Properties: posthog.Properties{"subject": follow.SubjectDid}, 118 }) 119 if err != nil { 120 log.Println("failed to enqueue posthog event:", err) 121 } 122} 123 124func (n *posthogNotifier) UpdateProfile(ctx context.Context, profile *db.Profile) { 125 err := n.client.Enqueue(posthog.Capture{ 126 DistinctId: profile.Did, 127 Event: "edit_profile", 128 }) 129 if err != nil { 130 log.Println("failed to enqueue posthog event:", err) 131 } 132} 133 134func (n *posthogNotifier) DeleteString(ctx context.Context, did, rkey string) { 135 err := n.client.Enqueue(posthog.Capture{ 136 DistinctId: did, 137 Event: "delete_string", 138 Properties: posthog.Properties{"rkey": rkey}, 139 }) 140 if err != nil { 141 log.Println("failed to enqueue posthog event:", err) 142 } 143} 144 145func (n *posthogNotifier) EditString(ctx context.Context, string *db.String) { 146 err := n.client.Enqueue(posthog.Capture{ 147 DistinctId: string.Did.String(), 148 Event: "edit_string", 149 Properties: posthog.Properties{"rkey": string.Rkey}, 150 }) 151 if err != nil { 152 log.Println("failed to enqueue posthog event:", err) 153 } 154} 155 156func (n *posthogNotifier) CreateString(ctx context.Context, string *db.String) { 157 err := n.client.Enqueue(posthog.Capture{ 158 DistinctId: string.Did.String(), 159 Event: "create_string", 160 Properties: posthog.Properties{"rkey": string.Rkey}, 161 }) 162 if err != nil { 163 log.Println("failed to enqueue posthog event:", err) 164 } 165}