veza/veza-chat-server/migrations/archive/004_corrective_fix.sql
2025-12-03 20:33:26 +01:00

69 lines
No EOL
2.7 KiB
PL/PgSQL

-- Migration 004: Correction et compatibilité avec le schéma existant
BEGIN;
-- CORRECTIONS DES FONCTIONS EXISTANTES AVEC CONFLITS
-- Supprimer les fonctions existantes qui ont des conflits de type de retour
DROP FUNCTION IF EXISTS cleanup_expired_sessions();
DROP FUNCTION IF EXISTS cleanup_expired_sessions(integer);
DROP FUNCTION IF EXISTS cleanup_old_data();
DROP FUNCTION IF EXISTS calculate_user_reputation(integer);
-- CORRECTIONS DE LA TABLE ROOMS
ALTER TABLE rooms ADD COLUMN IF NOT EXISTS creator_id INTEGER;
ALTER TABLE rooms ADD COLUMN IF NOT EXISTS max_members INTEGER DEFAULT 1000;
ALTER TABLE rooms ADD COLUMN IF NOT EXISTS description TEXT;
-- CORRECTIONS DE LA TABLE MESSAGES
DO $$
BEGIN
IF EXISTS (SELECT 1 FROM information_schema.columns
WHERE table_name = 'messages' AND column_name = 'timestamp') THEN
ALTER TABLE messages RENAME COLUMN timestamp TO created_at;
END IF;
END $$;
ALTER TABLE messages ADD COLUMN IF NOT EXISTS is_pinned BOOLEAN DEFAULT false;
ALTER TABLE messages ADD COLUMN IF NOT EXISTS thread_count INTEGER DEFAULT 0;
ALTER TABLE messages ADD COLUMN IF NOT EXISTS status VARCHAR(20) DEFAULT 'sent';
-- AMÉLIORER LA TABLE USERS
ALTER TABLE users ADD COLUMN IF NOT EXISTS reputation_score INTEGER DEFAULT 100;
ALTER TABLE users ADD COLUMN IF NOT EXISTS is_banned BOOLEAN DEFAULT false;
ALTER TABLE users ADD COLUMN IF NOT EXISTS last_seen TIMESTAMPTZ DEFAULT NOW();
ALTER TABLE users ADD COLUMN IF NOT EXISTS status VARCHAR(20) DEFAULT 'offline';
-- INDEX DE PERFORMANCE
CREATE INDEX IF NOT EXISTS idx_messages_pinned ON messages (is_pinned) WHERE is_pinned = true;
-- CORRECTIONS DES CONTRAINTES EN CONFLIT
-- Supprimer les contraintes qui pourraient être en conflit
ALTER TABLE audit_logs DROP CONSTRAINT IF EXISTS audit_logs_pkey CASCADE;
-- CORRECTIONS DES VUES EN CONFLIT
DROP VIEW IF EXISTS server_stats CASCADE;
DROP VIEW IF EXISTS user_activity_stats CASCADE;
-- CORRECTIONS DES TRIGGERS EN CONFLIT
DROP TRIGGER IF EXISTS update_user_last_activity ON messages;
DROP TRIGGER IF EXISTS log_user_activity ON messages;
-- CORRECTION DES ERREURS DE SYNTAXE DANS LES COMMENTAIRES
-- Nettoyer les commentaires qui causent des erreurs de syntaxe
DO $$
BEGIN
-- Éviter les erreurs de commentaires avec apostrophes
PERFORM 1;
END $$;
-- MISE À JOUR DES DONNÉES
UPDATE messages SET status = 'sent' WHERE status IS NULL;
UPDATE users SET reputation_score = 100 WHERE reputation_score IS NULL;
UPDATE users SET status = 'offline' WHERE status IS NULL;
-- NETTOYAGE DES DOUBLONS POTENTIELS
-- Supprimer les index doublons s'ils existent
DROP INDEX IF EXISTS idx_users_role;
DROP INDEX IF EXISTS idx_messages_created_at;
COMMIT;