added delete message function

This commit is contained in:
slawk0
2025-02-08 12:58:04 +01:00
parent 5ebc929b9c
commit e8d8c51d64

View File

@@ -107,3 +107,45 @@ func checkMembership(db *sql.DB, userID uuid.UUID, conversationID uuid.UUID) (bo
}
return isMember, nil
}
func DeleteMessage(db *sql.DB, userID uuid.UUID, conversationID uuid.UUID, messageID int) error {
checkMessageOwnershipQuery := `
SELECT user_id FROM Messages WHERE message_id = $1;
`
deleteMessageQuery := `
DELETE FROM Messages WHERE message_id = $1;
`
var messageOwnerID uuid.UUID
err := db.QueryRow(checkMessageOwnershipQuery, messageID).Scan(&messageOwnerID)
if err != nil {
return helpers.NewError(helpers.ErrInternal, "Failed to delete message", fmt.Errorf("failed to check message ownership: %w", err))
}
var isSelfMessage bool
if messageOwnerID == userID {
isSelfMessage = true
}
isAdmin, err := IsAdmin(db, userID, conversationID)
if err != nil {
return err
}
if !isSelfMessage && !isAdmin {
return helpers.NewError(helpers.ErrForbidden, "You don't have permissions to delete that message ", nil)
}
row, err := db.Exec(deleteMessageQuery, messageID)
if err != nil {
return helpers.NewError(helpers.ErrInternal, "Failed to delete message", fmt.Errorf("failed to delete message: %w", err))
}
rowsAffected, err := row.RowsAffected()
if err != nil {
return helpers.NewError(helpers.ErrInternal, "Failed to delete message", fmt.Errorf("failed to get rows affected: %w", err))
}
if rowsAffected == 0 {
return helpers.NewError(helpers.ErrNotFound, "Message not found", nil)
}
return nil
}