From a03a35a5d6c86ef85d66bae501daaa1cd8c47c2e Mon Sep 17 00:00:00 2001 From: kim <89579420+NyaaaWhatsUpDoc@users.noreply.github.com> Date: Thu, 20 Feb 2025 10:13:07 +0000 Subject: [bugfix] update fedi api to support multiple separate votes in same multiple choice poll (#3809) --- internal/db/bundb/poll.go | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) (limited to 'internal/db/bundb/poll.go') diff --git a/internal/db/bundb/poll.go b/internal/db/bundb/poll.go index 5da9832f0..d21945377 100644 --- a/internal/db/bundb/poll.go +++ b/internal/db/bundb/poll.go @@ -380,8 +380,8 @@ func (p *pollDB) PutPollVote(ctx context.Context, vote *gtsmodel.PollVote) error return err } - // Increment poll votes for choices. - poll.IncrementVotes(vote.Choices) + // Increment vote choices and voters count. + poll.IncrementVotes(vote.Choices, true) // Finally, update the poll entry. _, err := tx.NewUpdate(). @@ -394,6 +394,17 @@ func (p *pollDB) PutPollVote(ctx context.Context, vote *gtsmodel.PollVote) error }) } +func (p *pollDB) UpdatePollVote(ctx context.Context, vote *gtsmodel.PollVote, cols ...string) error { + return p.state.Caches.DB.PollVote.Store(vote, func() error { + _, err := p.db.NewUpdate(). + Model(vote). + Column(cols...). + Where("? = ?", bun.Ident("id"), vote.ID). + Exec(ctx) + return err + }) +} + func (p *pollDB) DeletePollVoteBy(ctx context.Context, pollID string, accountID string) error { // Gather necessary fields from // deleted for cache invaliation. @@ -487,8 +498,8 @@ func updatePollCounts(ctx context.Context, tx bun.Tx, deleted *gtsmodel.PollVote return err } - // Decrement votes for these choices. - poll.DecrementVotes(deleted.Choices) + // Decrement vote choices and voters count. + poll.DecrementVotes(deleted.Choices, true) // Finally, update the poll entry. if _, err := tx.NewUpdate(). -- cgit v1.2.3