fix unread count
This commit is contained in:
parent
c07d3dfefb
commit
7463a86299
@ -420,10 +420,23 @@ func (r *LetterOutgoingRecipientRepository) CreateBulk(ctx context.Context, list
|
||||
func (r *LetterOutgoingRecipientRepository) CountUnreadByUser(ctx context.Context, userID uuid.UUID) (int, error) {
|
||||
db := DBFromContext(ctx, r.db)
|
||||
var count int64
|
||||
if err := db.WithContext(ctx).
|
||||
Model(&entities.LetterOutgoingRecipient{}).
|
||||
Where("user_id = ? AND read_at IS NULL", userID).
|
||||
Count(&count).Error; err != nil {
|
||||
|
||||
sql := `
|
||||
SELECT COUNT(*) FROM (
|
||||
SELECT * FROM letter_outgoing_recipients
|
||||
WHERE user_id = ? AND read_at IS NULL
|
||||
AND id IN (
|
||||
SELECT id FROM (
|
||||
SELECT id, ROW_NUMBER() OVER (PARTITION BY letter_id ORDER BY created_at DESC) as rn
|
||||
FROM letter_outgoing_recipients
|
||||
WHERE user_id = ?
|
||||
) ranked
|
||||
WHERE rn = 1
|
||||
)
|
||||
) result
|
||||
`
|
||||
|
||||
if err := db.WithContext(ctx).Raw(sql, userID, userID).Scan(&count).Error; err != nil {
|
||||
return 0, err
|
||||
}
|
||||
return int(count), nil
|
||||
|
||||
@ -865,10 +865,23 @@ func (r *LetterIncomingRecipientRepository) CountReadByLetter(ctx context.Contex
|
||||
func (r *LetterIncomingRecipientRepository) CountUnreadByUser(ctx context.Context, userID uuid.UUID) (int, error) {
|
||||
db := DBFromContext(ctx, r.db)
|
||||
var count int64
|
||||
if err := db.WithContext(ctx).
|
||||
Model(&entities.LetterIncomingRecipient{}).
|
||||
Where("recipient_user_id = ? AND read_at IS NULL", userID).
|
||||
Count(&count).Error; err != nil {
|
||||
|
||||
sql := `
|
||||
SELECT COUNT(*) FROM (
|
||||
SELECT * FROM letter_incoming_recipients
|
||||
WHERE recipient_user_id = ? AND read_at IS NULL
|
||||
AND id IN (
|
||||
SELECT id FROM (
|
||||
SELECT id, ROW_NUMBER() OVER (PARTITION BY letter_id ORDER BY created_at DESC) as rn
|
||||
FROM letter_incoming_recipients
|
||||
WHERE recipient_user_id = ?
|
||||
) ranked
|
||||
WHERE rn = 1
|
||||
)
|
||||
) result
|
||||
`
|
||||
|
||||
if err := db.WithContext(ctx).Raw(sql, userID, userID).Scan(&count).Error; err != nil {
|
||||
return 0, err
|
||||
}
|
||||
return int(count), nil
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user