mirror of https://github.com/buster-so/buster.git
36 lines
1.2 KiB
SQL
36 lines
1.2 KiB
SQL
-- Migration: add_file_info_to_chats
|
|
-- Created: 2025-04-01-184914
|
|
-- Original: 2025-04-01-184914_add_file_info_to_chats
|
|
|
|
ALTER TABLE chats
|
|
ADD COLUMN most_recent_file_id UUID NULL,
|
|
ADD COLUMN most_recent_file_type VARCHAR(255) NULL;
|
|
|
|
-- Add indices to improve query performance
|
|
CREATE INDEX idx_chats_most_recent_file_id ON chats(most_recent_file_id);
|
|
CREATE INDEX idx_chats_most_recent_file_type ON chats(most_recent_file_type);
|
|
|
|
-- Data Migration - Set most_recent_file_id and most_recent_file_type for existing chats
|
|
WITH LatestFilePerChat AS (
|
|
SELECT DISTINCT ON (m.chat_id)
|
|
m.chat_id,
|
|
mtf.file_id,
|
|
-- Determine file type
|
|
CASE
|
|
WHEN mf.id IS NOT NULL THEN 'metric'
|
|
WHEN df.id IS NOT NULL THEN 'dashboard'
|
|
ELSE NULL
|
|
END AS file_type
|
|
FROM messages m
|
|
JOIN messages_to_files mtf ON m.id = mtf.message_id
|
|
LEFT JOIN metric_files mf ON mtf.file_id = mf.id
|
|
LEFT JOIN dashboard_files df ON mtf.file_id = df.id
|
|
WHERE m.deleted_at IS NULL AND mtf.deleted_at IS NULL
|
|
ORDER BY m.chat_id, m.created_at DESC
|
|
)
|
|
UPDATE chats c
|
|
SET
|
|
most_recent_file_id = lfpc.file_id,
|
|
most_recent_file_type = lfpc.file_type
|
|
FROM LatestFilePerChat lfpc
|
|
WHERE c.id = lfpc.chat_id; |