-- Исправление триггера update_last_active для работы с messages и swipes
-- Проблема: в messages есть sender_id, а в swipes есть user_id

-- Удаляем старые триггеры
DROP TRIGGER IF EXISTS update_last_active_on_message ON messages;
DROP TRIGGER IF EXISTS update_last_active_on_swipe ON swipes;
DROP FUNCTION IF EXISTS update_last_active();

-- Создаём функцию для обновления last_active для отправителя сообщения
CREATE OR REPLACE FUNCTION update_last_active_on_message()
RETURNS TRIGGER AS $$
BEGIN
    UPDATE profiles
    SET last_active = CURRENT_TIMESTAMP
    WHERE user_id = NEW.sender_id;
    
    RETURN NEW;
END;
$$ LANGUAGE plpgsql;

-- Создаём функцию для обновления last_active при свайпе
CREATE OR REPLACE FUNCTION update_last_active_on_swipe()
RETURNS TRIGGER AS $$
BEGIN
    UPDATE profiles
    SET last_active = CURRENT_TIMESTAMP
    WHERE user_id = NEW.user_id;
    
    RETURN NEW;
END;
$$ LANGUAGE plpgsql;

-- Создаём триггер для messages
CREATE TRIGGER update_last_active_on_message
    AFTER INSERT ON messages
    FOR EACH ROW
    EXECUTE FUNCTION update_last_active_on_message();

-- Создаём триггер для swipes
CREATE TRIGGER update_last_active_on_swipe
    AFTER INSERT ON swipes
    FOR EACH ROW
    EXECUTE FUNCTION update_last_active_on_swipe();

-- Проверка
SELECT 'Triggers update_last_active fixed successfully' AS status;
