feat: sync durable moderation and appeals
This commit is contained in:
parent
e1a95c7318
commit
9f467f4be7
140 changed files with 13730 additions and 316 deletions
|
|
@ -612,3 +612,48 @@ LIMIT $`+fmt.Sprint(len(args)), args...)
|
|||
NextOffset: next,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (s *ChannelStore) FindChannelMessageReaction(ctx context.Context, req domain.ChannelMessageReactionLookupRequest) (domain.ChannelMessageReactionLookup, bool, error) {
|
||||
if req.ViewerUserID == 0 || req.ChannelID == 0 || req.MessageID <= 0 ||
|
||||
req.MessageID > domain.MaxMessageBoxID || req.ReactorUserID == 0 {
|
||||
return domain.ChannelMessageReactionLookup{}, false, domain.ErrChannelInvalid
|
||||
}
|
||||
channel, member, err := s.getChannelForMember(ctx, s.db, req.ViewerUserID, req.ChannelID)
|
||||
if err != nil {
|
||||
return domain.ChannelMessageReactionLookup{}, false, err
|
||||
}
|
||||
message, err := s.getChannelMessage(ctx, s.db, req.ChannelID, req.MessageID)
|
||||
if err != nil {
|
||||
return domain.ChannelMessageReactionLookup{}, false, err
|
||||
}
|
||||
if message.Deleted || message.ID <= member.AvailableMinID {
|
||||
return domain.ChannelMessageReactionLookup{}, false, domain.ErrMessageIDInvalid
|
||||
}
|
||||
rows, err := s.db.Query(ctx, `
|
||||
SELECT channel_id, message_id, reacted_user_id, sender_user_id,
|
||||
reaction_type, reaction_value, big, unread, chosen_order, reaction_date
|
||||
FROM channel_message_reactions
|
||||
WHERE channel_id = $1 AND message_id = $2 AND reacted_user_id = $3
|
||||
ORDER BY chosen_order, reaction_type, reaction_value
|
||||
LIMIT $4`,
|
||||
req.ChannelID, req.MessageID, req.ReactorUserID,
|
||||
domain.MaxChannelMessageReactionsPerUser)
|
||||
if err != nil {
|
||||
return domain.ChannelMessageReactionLookup{}, false, fmt.Errorf("find channel message reaction: %w", err)
|
||||
}
|
||||
defer rows.Close()
|
||||
reactions := make([]domain.ChannelMessagePeerReaction, 0, domain.MaxChannelMessageReactionsPerUser)
|
||||
for rows.Next() {
|
||||
reaction, err := scanChannelMessagePeerReaction(rows, req.ViewerUserID)
|
||||
if err != nil {
|
||||
return domain.ChannelMessageReactionLookup{}, false, err
|
||||
}
|
||||
reactions = append(reactions, reaction)
|
||||
}
|
||||
if err := rows.Err(); err != nil {
|
||||
return domain.ChannelMessageReactionLookup{}, false, err
|
||||
}
|
||||
return domain.ChannelMessageReactionLookup{
|
||||
Channel: channel, Message: message, Reactions: reactions,
|
||||
}, len(reactions) > 0, nil
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue