-- Migration: Support pour History Pagination, Message Search, et Offline Sync -- Création: 2025-12-05 -- Version: 1.0.0 -- Description: Ajoute les index nécessaires pour la pagination, recherche et synchronisation -- ================================================================ -- INDEX POUR PAGINATION (HISTORY) -- ================================================================ -- Index composite pour la pagination efficace par conversation et date -- Permet les requêtes ORDER BY created_at avec WHERE conversation_id CREATE INDEX IF NOT EXISTS idx_messages_conv_created_at ON messages(conversation_id, created_at DESC); -- Index pour les requêtes avec filtre is_deleted (pour exclure les messages supprimés) CREATE INDEX IF NOT EXISTS idx_messages_conv_created_not_deleted ON messages(conversation_id, created_at DESC) WHERE is_deleted = false; -- ================================================================ -- INDEX POUR RECHERCHE TEXTUELLE -- ================================================================ -- Extension pour recherche trigram (recherche partielle efficace) CREATE EXTENSION IF NOT EXISTS pg_trgm; -- Index GIN trigram pour recherche ILIKE performante sur content CREATE INDEX IF NOT EXISTS idx_messages_content_trgm ON messages USING GIN(content gin_trgm_ops); -- Index pour recherche avec filtre conversation_id + content CREATE INDEX IF NOT EXISTS idx_messages_conv_content_trgm ON messages USING GIN(conversation_id, content gin_trgm_ops); -- ================================================================ -- INDEX POUR SYNC OFFLINE -- ================================================================ -- Index pour les requêtes WHERE created_at > timestamp (sync depuis) CREATE INDEX IF NOT EXISTS idx_messages_conv_created_sync ON messages(conversation_id, created_at ASC) WHERE is_deleted = false; -- Index pour les requêtes WHERE updated_at > timestamp (pour les edits) CREATE INDEX IF NOT EXISTS idx_messages_conv_updated_sync ON messages(conversation_id, updated_at ASC) WHERE is_deleted = false; -- ================================================================ -- COMMENTAIRES POUR DOCUMENTATION -- ================================================================ COMMENT ON INDEX idx_messages_conv_created_at IS 'Index pour pagination efficace de l''historique par conversation'; COMMENT ON INDEX idx_messages_conv_created_not_deleted IS 'Index pour pagination en excluant les messages supprimés'; COMMENT ON INDEX idx_messages_content_trgm IS 'Index GIN trigram pour recherche textuelle performante sur le contenu'; COMMENT ON INDEX idx_messages_conv_content_trgm IS 'Index pour recherche textuelle par conversation'; COMMENT ON INDEX idx_messages_conv_created_sync IS 'Index pour synchronisation offline (messages depuis timestamp)'; COMMENT ON INDEX idx_messages_conv_updated_sync IS 'Index pour synchronisation offline (updates depuis timestamp)';