- Migration 074: edited_at, deleted_at columns + chat_reactions table - Backend: PATCH edit (own only), DELETE soft-delete (own/admin), POST toggle reaction fetchMessage helper returns full message with aggregated reactions in one query - API types: ChatReaction interface, editedAt/deletedAt/reactions in ChatMessage - ChatWidget: hover toolbar (😊 react · ✏️ edit · 🗑️ delete), inline edit with save/cancel (Enter/Esc), reaction emoji picker (8 emojis), reaction pills below messages (click to toggle), '· изм.' label on edited messages, soft-deleted messages show 'Сообщение удалено' placeholder Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
12 lines
566 B
SQL
12 lines
566 B
SQL
ALTER TABLE chat_messages ADD COLUMN IF NOT EXISTS edited_at TIMESTAMPTZ;
|
|
ALTER TABLE chat_messages ADD COLUMN IF NOT EXISTS deleted_at TIMESTAMPTZ;
|
|
|
|
CREATE TABLE IF NOT EXISTS chat_reactions (
|
|
message_id UUID NOT NULL REFERENCES chat_messages(id) ON DELETE CASCADE,
|
|
user_id UUID NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
emoji VARCHAR(12) NOT NULL,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
PRIMARY KEY (message_id, user_id, emoji)
|
|
);
|
|
CREATE INDEX IF NOT EXISTS idx_chat_reactions_message ON chat_reactions(message_id);
|