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) {
|
func (r *LetterOutgoingRecipientRepository) CountUnreadByUser(ctx context.Context, userID uuid.UUID) (int, error) {
|
||||||
db := DBFromContext(ctx, r.db)
|
db := DBFromContext(ctx, r.db)
|
||||||
var count int64
|
var count int64
|
||||||
if err := db.WithContext(ctx).
|
|
||||||
Model(&entities.LetterOutgoingRecipient{}).
|
sql := `
|
||||||
Where("user_id = ? AND read_at IS NULL", userID).
|
SELECT COUNT(*) FROM (
|
||||||
Count(&count).Error; err != nil {
|
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 0, err
|
||||||
}
|
}
|
||||||
return int(count), nil
|
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) {
|
func (r *LetterIncomingRecipientRepository) CountUnreadByUser(ctx context.Context, userID uuid.UUID) (int, error) {
|
||||||
db := DBFromContext(ctx, r.db)
|
db := DBFromContext(ctx, r.db)
|
||||||
var count int64
|
var count int64
|
||||||
if err := db.WithContext(ctx).
|
|
||||||
Model(&entities.LetterIncomingRecipient{}).
|
sql := `
|
||||||
Where("recipient_user_id = ? AND read_at IS NULL", userID).
|
SELECT COUNT(*) FROM (
|
||||||
Count(&count).Error; err != nil {
|
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 0, err
|
||||||
}
|
}
|
||||||
return int(count), nil
|
return int(count), nil
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user