Feature: complete message inbox, view, and topbar integration
Added users_messages schema with correct field naming (senderId, recipientId) Implemented message count and recent message fetch via storage.GetMessageCount and GetRecentMessages Fixed field mismatches in SQL queries (recipientId vs recipient_id) Displayed unread message badge in topbar with truncation for body preview Linked messages in dropdown to full view (/account/messages/read?id=...) Added fallback handling for unauthorized/invalid message access Cleaned up BuildTemplateData to support full message context Ensured CSRF/session/user context remains intact throughout
This commit is contained in:
@@ -9,17 +9,17 @@ import (
|
||||
func GetMessageCount(db *sql.DB, userID int) (int, error) {
|
||||
var count int
|
||||
err := db.QueryRow(`
|
||||
SELECT COUNT(*) FROM user_messages
|
||||
WHERE recipient_id = ? AND is_read = FALSE
|
||||
SELECT COUNT(*) FROM users_messages
|
||||
WHERE recipientId = ? AND is_read = FALSE
|
||||
`, userID).Scan(&count)
|
||||
return count, err
|
||||
}
|
||||
|
||||
func GetRecentMessages(db *sql.DB, userID int, limit int) []models.Message {
|
||||
rows, err := db.Query(`
|
||||
SELECT id, sender_id, recipient_id, subject, body, is_read, created_at
|
||||
FROM user_messages
|
||||
WHERE recipient_id = ?
|
||||
SELECT id, senderId, recipientId, subject, message, is_read, created_at
|
||||
FROM users_messages
|
||||
WHERE recipientId = ?
|
||||
ORDER BY created_at DESC
|
||||
LIMIT ?
|
||||
`, userID, limit)
|
||||
@@ -49,9 +49,9 @@ func GetRecentMessages(db *sql.DB, userID int, limit int) []models.Message {
|
||||
|
||||
func GetMessageByID(db *sql.DB, userID, messageID int) (*models.Message, error) {
|
||||
row := db.QueryRow(`
|
||||
SELECT id, sender_id, recipient_id, subject, body, is_read, created_at
|
||||
FROM user_messages
|
||||
WHERE id = ? AND recipient_id = ?
|
||||
SELECT id, senderId, recipientId, subject, message, is_read, created_at
|
||||
FROM users_messages
|
||||
WHERE id = ? AND recipientId = ?
|
||||
`, messageID, userID)
|
||||
|
||||
var m models.Message
|
||||
@@ -64,9 +64,9 @@ func GetMessageByID(db *sql.DB, userID, messageID int) (*models.Message, error)
|
||||
|
||||
func MarkMessageAsRead(db *sql.DB, messageID, userID int) error {
|
||||
result, err := db.Exec(`
|
||||
UPDATE user_messages
|
||||
UPDATE users_messages
|
||||
SET is_read = TRUE
|
||||
WHERE id = ? AND recipient_id = ?
|
||||
WHERE id = ? AND recipientId = ?
|
||||
`, messageID, userID)
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
Reference in New Issue
Block a user