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
|
var count int64
|
||||||
|
|
||||||
sql := `
|
sql := `
|
||||||
SELECT COUNT(*) FROM (
|
WITH valid_recipients AS (
|
||||||
SELECT * FROM letter_outgoing_recipients
|
SELECT lor.id, lor.letter_id, lor.read_at, lor.created_at,
|
||||||
WHERE user_id = ? AND read_at IS NULL
|
ROW_NUMBER() OVER (PARTITION BY lor.letter_id ORDER BY lor.created_at DESC) as rn
|
||||||
AND id IN (
|
FROM letter_outgoing_recipients lor
|
||||||
SELECT id FROM (
|
INNER JOIN letters_outgoing l ON l.id = lor.letter_id AND l.deleted_at IS NULL
|
||||||
SELECT id, ROW_NUMBER() OVER (PARTITION BY letter_id ORDER BY created_at DESC) as rn
|
WHERE lor.user_id = ?
|
||||||
FROM letter_outgoing_recipients
|
|
||||||
WHERE user_id = ?
|
|
||||||
) ranked
|
|
||||||
WHERE rn = 1
|
|
||||||
)
|
)
|
||||||
) 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 0, err
|
||||||
}
|
}
|
||||||
return int(count), nil
|
return int(count), nil
|
||||||
|
|||||||
@ -923,21 +923,19 @@ func (r *LetterIncomingRecipientRepository) CountUnreadByUser(ctx context.Contex
|
|||||||
var count int64
|
var count int64
|
||||||
|
|
||||||
sql := `
|
sql := `
|
||||||
SELECT COUNT(*) FROM (
|
WITH valid_recipients AS (
|
||||||
SELECT * FROM letter_incoming_recipients
|
SELECT lir.id, lir.letter_id, lir.read_at, lir.created_at,
|
||||||
WHERE recipient_user_id = ? AND read_at IS NULL
|
ROW_NUMBER() OVER (PARTITION BY lir.letter_id ORDER BY lir.created_at DESC) as rn
|
||||||
AND id IN (
|
FROM letter_incoming_recipients lir
|
||||||
SELECT id FROM (
|
INNER JOIN letters_incoming l ON l.id = lir.letter_id AND l.deleted_at IS NULL
|
||||||
SELECT id, ROW_NUMBER() OVER (PARTITION BY letter_id ORDER BY created_at DESC) as rn
|
WHERE lir.recipient_user_id = ?
|
||||||
FROM letter_incoming_recipients
|
|
||||||
WHERE recipient_user_id = ?
|
|
||||||
) ranked
|
|
||||||
WHERE rn = 1
|
|
||||||
)
|
)
|
||||||
) 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 0, err
|
||||||
}
|
}
|
||||||
return int(count), nil
|
return int(count), nil
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user