fix count letter
This commit is contained in:
parent
67b37a9c1e
commit
5bb5287be3
@ -558,21 +558,19 @@ func (r *LetterOutgoingRecipientRepository) CountUnreadByUser(ctx context.Contex
|
||||
var count int64
|
||||
|
||||
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
|
||||
WITH valid_recipients AS (
|
||||
SELECT lor.id, lor.letter_id, lor.read_at, lor.created_at,
|
||||
ROW_NUMBER() OVER (PARTITION BY lor.letter_id ORDER BY lor.created_at DESC) as rn
|
||||
FROM letter_outgoing_recipients lor
|
||||
INNER JOIN letters_outgoing l ON l.id = lor.letter_id AND l.deleted_at IS NULL
|
||||
WHERE lor.user_id = ?
|
||||
)
|
||||
) result
|
||||
SELECT COUNT(*)
|
||||
FROM valid_recipients
|
||||
WHERE rn = 1 AND read_at IS NULL
|
||||
`
|
||||
|
||||
if err := db.WithContext(ctx).Raw(sql, userID, userID).Scan(&count).Error; err != nil {
|
||||
if err := db.WithContext(ctx).Raw(sql, userID).Scan(&count).Error; err != nil {
|
||||
return 0, err
|
||||
}
|
||||
return int(count), nil
|
||||
|
||||
@ -923,21 +923,19 @@ func (r *LetterIncomingRecipientRepository) CountUnreadByUser(ctx context.Contex
|
||||
var count int64
|
||||
|
||||
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
|
||||
WITH valid_recipients AS (
|
||||
SELECT lir.id, lir.letter_id, lir.read_at, lir.created_at,
|
||||
ROW_NUMBER() OVER (PARTITION BY lir.letter_id ORDER BY lir.created_at DESC) as rn
|
||||
FROM letter_incoming_recipients lir
|
||||
INNER JOIN letters_incoming l ON l.id = lir.letter_id AND l.deleted_at IS NULL
|
||||
WHERE lir.recipient_user_id = ?
|
||||
)
|
||||
) result
|
||||
SELECT COUNT(*)
|
||||
FROM valid_recipients
|
||||
WHERE rn = 1 AND read_at IS NULL
|
||||
`
|
||||
|
||||
if err := db.WithContext(ctx).Raw(sql, userID, userID).Scan(&count).Error; err != nil {
|
||||
if err := db.WithContext(ctx).Raw(sql, userID).Scan(&count).Error; err != nil {
|
||||
return 0, err
|
||||
}
|
||||
return int(count), nil
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user